我正在运行一个后台工作者,它正在调用一个函数来下载大文件和文件夹。我无法通过cancelasync来阻止这种情况。收到取消暂停事件,但我的功能仍在计算中。 我怎么能停止线程?
Private Sub copydownloads_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles copydownloads.DoWork
DirectoryCopy()
End Sub
public sub DirectoryCopy()
'here is the work done
end sub
答案 0 :(得分:2)
CancelAsync不会神奇地停止BackgroundWorker。您必须在下载代码中手动轮询CancelPending属性。
工作人员代码应定期检查CancellationPending属性,看它是否已设置为true。
当你看到CancellationPending设置为true时,你必须停止下载(即在循环中下载小块并不断检查标记)。
有关如何以块的形式下载文件的示例代码,请参阅此问题。在该代码中添加CancelPending检查: Download File With Start / Pause / Stop