如何在 运行 函数时停止后台工作?
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
。出于同样的原因,通常不鼓励这样做,但至少有可能。
在后台线程中有一堆处理 运行 作为函数序列,还有一个带有取消按钮的表单。像往常一样,取消按钮设置 CancellationPending
位。
在每个函数调用之间,通过以下方式检查:
If (worker.CancellationPending) Then
e.Cancel = True
Return
End If
但是如果一个函数(例如加载多个文件)开始显示错误消息,用户希望就此停止程序,而不是等到全部函数完成。我怎样才能做到这一点?
我可以在每个函数中多次检查 worker.CancellationPending
位,但我觉得这可能会导致代码非常糟糕。
有没有办法在 运行 函数中间停止后台工作者?
你不能。只是在任意点从外部终止某些东西通常不是一个好主意,因此 BackgroundWorker
不支持它。您可以考虑创建自己的 Thread
,然后在其上调用 Abort
。出于同样的原因,通常不鼓励这样做,但至少有可能。