我有一个线程数组,其中每个线程从线程搜索管理器获取搜索任务 - 使用生产者/消费者模块 - 当它完成它时,它等待直到来自搜索管理器线程的下一个信号。搜索是通过Web执行的 - 它需要大量时间(主要是获取HTML数据部分)。 我的问题是当用户选择停止当前搜索并开始新的搜索集时,所有搜索都忙于上一个Web搜索期间,因此,用户等待在禁止更长相关的搜索结束其任务之前等待开始新的。

我的问题是 - 如何立即开始新的相关任务? 由于长度等待对于Get HTTP方法,我无法使用标志(表示跳过搜索的线程)。 有没有办法停止积极的方法并从头开始启动它?(我不喜欢使用新线程......)

提前感谢,

shmouel。

有帮助吗?

解决方案

I found a similar stackoverflow thread that should be of use. The trick is to use BeginGetResponse instead of GetResponse in order to call an abort on the HTTP request: http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.abort.aspx

Link to original thread: Killing HttpWebRequest object using Thread.Abort

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top