本文主要是介绍backgroundWorker.IsBusy 永远True,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
软件判断 BackGroundWorker.IsBusy 永远为True解决办法
问题
后台工作BackGroundWorker可以通过BackgroundWorker.CancelAsync()请求停止。 进程是否停止,可以用
BackGroundWorker.IsBusy属性检测。
然而
if(backgroundWorker.IsBusy){backgroundWorker.CancelAsync();while(backgroundWorkerScan.IsBusy){Thread.Sleep(100);}}
会陷入循环永不退出。
原因和解决方案
Sleep()阻止了backgroundWorker_RunWorkerCompleted()的运行。而 IsBusy需要等到RunWorkerCompleted运行完才转False。
这里RunWorkerCompleted是backgroundWorker的完成回调方法。
插入一个运行事件就可以解决:
if(backgroundWorker.IsBusy){backgroundWorker.CancelAsync();while(backgroundWorkerScan.IsBusy){Application.DoEvents();Thread.Sleep(100);}}
这篇关于backgroundWorker.IsBusy 永远True的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!