取消背景任务在C#

取消背景任务在C#,第1张

概述当我的C#应用​​程序关闭时,有时会被清除程序中.具体来说,后台工作人员没有关闭.这基本上是我试图关闭它:     private void App_FormClosing(object sender,FormClosingEventArgs e)     {        backgroundWorker1.CancelAsync();        while(backgroundWorker 当我的C#应用​​程序关闭时,有时会被清除程序中.具体来说,后台工作人员没有关闭.这基本上是我试图关闭它:

private voID App_FormClosing(object sender,FormClosingEventArgs e)
{
backgrounDWorker1.CancelAsync();
while(backgrounDWorker1.IsBusy); //卡在这里
}

有不同的方式我应该这样做吗?我正在使用Microsoft Visual C#2008 Express Edition.谢谢.

附加信息:

后台工作人员似乎没有退出.这是我有的:

private voID backgrounDWorker1_DoWork(object sender,DoWorkEventArgs e){   while (!backgrounDWorker1.CancellationPending)   {      // Do something.   }}

我也修改了清理代码:

private voID App_FormClosing(object sender,FormClosingEventArgs e){   while (backgrounDWorker1.IsBusy)   {      backgrounDWorker1.CancelAsync();      System.Threading.Thread.Sleep(1000);   }}

还有什么我应该做的吗?

解决方法 Kevin Gale是正确的,表示您的BackgrounDWorker的DoWork处理程序需要轮询“取消预定”,如果请求取消,则返回.

话虽如此,如果您的应用程序关闭时发生这种情况,您也可以安全地忽略它. BackgrounDWorker使用一个ThreadPool线程,根据定义,它是一个后台线程.离开此运行将不会阻止您的应用程序终止,并且线程将在您的应用程序关闭时自动被拆除.

总结

以上是内存溢出为你收集整理的取消背景任务在C#全部内容,希望文章能够帮你解决取消背景任务在C#所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1241587.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存