我正在使用BackgroundWorker
通过在循环内调用WebClient.DownloadString
来下载一些网站。我希望用户在下载内容时取消选择,所以无论何时我发现CancellationPending
在循环中间打开,我都会调用CancelAsync
。如何暂停BackgroundWorker?或类似的东西
但现在我注意到函数DownloadString
有时会冻结,所以我决定使用DownloadStringAsync
来代替(所有这些都在使用BackgroundWorker
创建的其他线程中)。由于我不想通过在调用DownloadStringAsync
之后退出循环和函数来重写我的整个代码,所以在调用它之后我做了一个while循环,它什么都不做,只是检查一个变量bool Stop
, DownloadStringCompleted
事件处理程序被调用或当用户请求取消操作时。
现在,奇怪的是,它在调试版本上正常工作;但是在发行版中,程序在while循环中冻结,就像它是主线程一样。
WaitHandle的作品完美。谢谢! – Juan 2010-06-12 17:38:58
在后台工作暂停/恢复循环http://stackoverflow.com/questions/8359058/pause-resume-loop-in-background-worker – 2012-12-31 01:40:12