C#停止幕后工作

C#停止幕后工作,c#,.net,multithreading,loops,backgroundworker,C#,.net,Multithreading,Loops,Backgroundworker,我有一个关于后台工作人员的问题 我在后台工作时有无止境的循环。如何停止它?将其更改为非无限循环 BackgroundWorker内置了取消支持。取消后台工作人员呼叫。此外,您还需要修改工作代码,以检查文档中提到的取消: CancelAsync提交终止挂起的后台操作的请求,并将CancellationPending属性设置为true 调用CancelAsync时,辅助方法有机会停止执行并退出。工作代码应定期检查CancellationPending属性,以查看其是否已设置为true 例如,如果工作

我有一个关于后台工作人员的问题


我在后台工作时有无止境的循环。如何停止它?

将其更改为非无限循环

BackgroundWorker
内置了取消支持。取消后台工作人员呼叫。此外,您还需要修改工作代码,以检查文档中提到的取消:

CancelAsync提交终止挂起的后台操作的请求,并将CancellationPending属性设置为true

调用CancelAsync时,辅助方法有机会停止执行并退出。工作代码应定期检查CancellationPending属性,以查看其是否已设置为true

例如,如果工作线程中有这样一个无休止的循环:

while (true)
{
    ...
}
然后您可以将其更改为:

while (!backgroundWorker.CancellationPending)
{
    ...
}

要使取消生效,还需要将属性设置为
true
。这可以在designer中完成。

请发布工作人员的代码,以便我们能够更深入地了解问题所在。(即使您删除了代码块,只是显示了您在何处初始化worker,您的worker在模糊地做什么,您当前正在做什么来停止它)。