取消背景任务在C#
发布时间:2020-12-15 18:27:03 所属栏目:百科 来源:网络整理
导读:当我的C#应用??程序关闭时,有时会被清除程序中.具体来说,后台工作人员没有关闭.这基本上是我试图关闭它: private void App_FormClosing(object sender,FormClosingEventArgs e) { backgroundWorker1.CancelAsync(); while(backgroundWorker1.IsBusy); //卡
当我的C#应用??程序关闭时,有时会被清除程序中.具体来说,后台工作人员没有关闭.这基本上是我试图关闭它:
private void App_FormClosing(object sender,FormClosingEventArgs e) 有不同的方式我应该这样做吗?我正在使用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线程,根据定义,它是一个后台线程.离开此运行将不会阻止您的应用程序终止,并且线程将在您的应用程序关闭时自动被拆除. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |