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#所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)