我使用了
但是我注意到函数
现在,奇怪的是,在调试版本下它能够正常工作;但是在发布版本下,程序在 while 循环中像主线程一样冻结了。
BackgroundWorker
在循环中调用 WebClient.DownloadString
来下载一些网站。我想要提供一个选项,让用户在下载过程中可以取消操作,所以当在循环的过程中发现 CancellationPending
为真时,我就调用 CancelAsync
。但是我注意到函数
DownloadString
有时会卡住,因此我决定在 BackgroundWorker
创建的线程中使用 DownloadStringAsync
。由于我不想通过调用 DownloadStringAsync
后退出循环和函数来重写整个代码,所以我在调用它后加了一个 while 循环,只检查一个名为 bool Stop
的变量是否为真。我将该变量设为 true,要么当 DownloadStringCompleted
事件处理程序被调用时,要么当用户请求取消操作时。现在,奇怪的是,在调试版本下它能够正常工作;但是在发布版本下,程序在 while 循环中像主线程一样冻结了。