我正在使用 a通过在循环中BackgroundWorker
调用来下载一些网站。WebClient.DownloadString
我希望用户在下载内容的过程中取消选项,所以CancelAsync
每当我发现它CancellationPending
在循环中间时我都会打电话。
但是现在我注意到该函数DownloadString
有时会冻结,所以我决定DownloadStringAsync
改用(所有这些都在使用创建的另一个线程中BackgroundWorker
)。而且由于我不想通过在调用后退出循环和函数来重写我的整个代码DownloadStringAsync
,所以我在调用它之后立即创建了一个 while 循环,它只检查一个变量,当事件处理程序bool Stop
时我变为 trueDownloadStringCompleted
被调用或当用户请求取消操作时。
现在,奇怪的是它在调试版本上运行良好;但是在第一个版本中,程序在 while 循环中冻结,就像它是主线程一样。