如何在 运行 函数时停止后台工作?

How to stop a backgroundworker while running a function?

在后台线程中有一堆处理 运行 作为函数序列,还有一个带有取消按钮的表单。像往常一样,取消按钮设置 CancellationPending 位。

在每个函数调用之间,通过以下方式检查:

If (worker.CancellationPending) Then
    e.Cancel = True
    Return
End If

但是如果一个函数(例如加载多个文件)开始显示错误消息,用户希望就此停止程序,而不是等到全部函数完成。我怎样才能做到这一点?

我可以在每个函数中多次检查 worker.CancellationPending 位,但我觉得这可能会导致代码非常糟糕。

有没有办法在 运行 函数中间停止后台工作者?

你不能。只是在任意点从外部终止某些东西通常不是一个好主意,因此 BackgroundWorker 不支持它。您可以考虑创建自己的 Thread,然后在其上调用 Abort。出于同样的原因,通常不鼓励这样做,但至少有可能。