C# 停止BackgroundWorker

发布于 2024-10-11 04:41:52 字数 52 浏览 4 评论 0原文

我对后台工作人员有疑问。

我在后台工作人员中有无限循环。我怎样才能阻止它?

I have question about backgroundworker.

I have endless loop in backgroundworker. How can I stop it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浅听莫相离 2024-10-18 04:41:52

将其更改为非无限循环。

BackgroundWorker 内置了对取消的支持。要取消后台工作程序,请调用 BackgroundWorker.CancelAsync< /代码>。您还需要修改工作人员代码以检查取消,如文档中所述:

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

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

因此,例如,如果您的工作线程中有这个无限循环:

while (true)
{
    ...
}

那么您可以将其更改为:

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

为了取消工作,您还需要设置属性 BackgroundWorker.WorkerSupportsCancellationtrue。这可以在设计器中完成。

Change it to a non-endless loop.

The BackgroundWorker has built-in support for cancellation. To cancel a background worker call BackgroundWorker.CancelAsync. Also you need to modify the worker code to check for cancellation as mentioned in the documentation:

CancelAsync submits a request to terminate the pending background operation and sets the CancellationPending property to true.

When you call CancelAsync, your worker method has an opportunity to stop its execution and exit. The worker code should periodically check the CancellationPending property to see if it has been set to true.

So for example if you have this endless loop in your worker thread:

while (true)
{
    ...
}

then you could change it to:

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

For cancellation to work you also need to set the property BackgroundWorker.WorkerSupportsCancellation to true. This can be done in the designer.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文