当前位置: 首页 > 编程语言 > C#

后台工作者中的暂停-恢复循环分享

时间:2023-04-11 02:03:42 C#

后台工作者中的暂停/恢复循环我在Winform应用程序的后台工作者中有一个循环。我刚刚使用了这段代码,它在暂停后不会恢复。在主类中,我使用这个System.Threading.ManualResetEvent_busy=newSystem.Threading.ManualResetEvent(false);然后在我的开始点击我写了这个:if(!backgroundWorker1.IsBusy){MessageBox.Show("NotBusy");//仅用于调试_busy.Set();Start_Back.Text="暂停";backgroundWorker1.RunWorkerAsync(tempCicle);}else{_busy.Reset();Start_Back.Text="简历";}btnStop.Enabled=true;然后在backgroundworkerdoWork中我这样写:privatevoidbackgroundWorker1_DoWork(objectsender,DoWorkEventArgse){调用(addTabsInvoke,“http://www.google.com”);foreach(某物){_busy.WaitOne();如果(backgroundWorker1.CancellationPending){返回;}if(tabs.InvokeRequired){............我不明白为什么作业暂停,而简历不起作用。我究竟做错了什么?我猜你想要的最好的猜测:以上是C#学习教程:后台工作程序中的暂停/恢复循环。如果对大家有用,需要进一步了解C#学习教程,希望大家喜欢Follow—voidResumeWorker(){//如果worker没有运行就启动if(!backgroundWorker1.IsBusy)backgroundWorker1.RunWorkerAsync(tempCicle);//取消阻塞worker_busy.Set();}voidPauseWorker(){//阻塞worker_busy.Reset();}voidCancelWorker(){if(backgroundWorker1.IsBusy){//将CancellationPending属性设置为truebackgroundWorker1.CancelAsync();//取消阻塞worker以便它可以看到_busy.Set();}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: