backgroundworker vb.net取消异步功能

时间:2015-01-24 08:55:10

标签: vb.net backgroundworker

我正在运行一个后台工作者,它正在调用一个函数来下载大文件和文件夹。我无法通过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

1 个答案:

答案 0 :(得分:2)

CancelAsync不会神奇地停止BackgroundWorker。您必须在下载代码中手动轮询CancelPending属性。

工作人员代码应定期检查CancellationPending属性,看它是否已设置为true。

当你看到CancellationPending设置为true时,你必须停止下载(即在循环中下载小块并不断检查标记)。

https://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.cancelasync%28v=vs.110%29.aspx

有关如何以块的形式下载文件的示例代码,请参阅此问题。在该代码中添加CancelPending检查: Download File With Start / Pause / Stop