首页 > 代码库 > WaitHandle——使用AutoResetEvent
WaitHandle——使用AutoResetEvent
区别ManualResetEvent:
使用AutoResetEvent和使用ManualResetEvent是完全相同的,只有一点区别:在使用autoresetevent时,在调用waitOne后,会自动执行到一个reset方法。
AutoResetEvent的waitone相当于将ManualResetEvent.waitone和reset合并为一个方法执行。
需要注意:autoresetevent的waitone和reset合并为了一个原子操作;
代码示例:
namespace 使用AutoResetEvent { class Program { AutoResetEvent mre = new AutoResetEvent(false); static void Main(string[] args) { Thread.CurrentThread.Name = "main "; Program p = new Program(); Thread worker = new Thread(p.ThreadEntry); worker.Name = "worker"; worker.Start(); Console.WriteLine("main :start worker"); p.mre.Set(); Thread.Sleep(100); Console.WriteLine("main:worker go..."); p.mre.Set(); Thread.Sleep(100); } void ThreadEntry() { int i = 0; string name = Thread.CurrentThread.Name; while (i<10) { mre.WaitOne(); //这里实际上是waitone和reset************ Console.WriteLine("{0}:{1}---{2}",name ,i,DateTime .Now .Millisecond); i++; } } } }
WaitHandle——使用AutoResetEvent
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。