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

AutoResetEvent相关的暂停-恢复线程分享

时间:2023-04-10 16:14:47 C#

AutoResetEvent相关的暂停/恢复线程在这段代码中,我想使用AutoResetEvent和bool变量来暂停/恢复一个线程。如果blocking==true(for循环中的work())是否可以每次暂停而不测试?测试“阻塞”变量也需要加锁,我认为这很耗时。类MyClass{AutoResetEventwait_handle=newAutoResetEvent();布尔阻塞=假;voidStart(){Threadthread=newThread(Work);线程。开始();}voidPause(){blocked=true;}voidResume(){blocked=false;wait_handle.Set();}privatevoidWork(){for(inti=0;i<1000000;i++){if(blocked)wait_handle.WaitOne();控制台.WriteLine(i);是的,你可以使用ManualResetEvent来避免你正在做的测试。ManualResetEvent将让您的线程通过,只要它被“设置”(发出信号),但与之前的AutoResetEvent不同,它不会在线程通过时自动重置线程。也就是说可以设置为允许循环工作,也可以重新设置为暂停:以上就是跟帖分享的C#学习教程:Pause/ResumewithAutoResetEvent相关的全部内容,如果对大家有用还有需要了解更多C#学习教程,希望大家多多关注—classMyClass{//设置reset事件一开始就发出信号,这样可以一直工作到pause被调用。ManualResetEventwait_handle=newManualResetEvent(true);voidStart(){Threadthread=newThread(Work);线程。开始();}voidPause(){wait_handle.Reset();}voidResume(){wait_handle.Set();}privatevoidWork(){for(inti=0;i本文采集自网络,不代表立场,如涉及侵权,请点击右侧联系管理员删除,如需转载转载请注明出处: