码迷,mamicode.com
首页 > 编程语言 > 详细

线程的信号机制

时间:2015-08-03 20:35:05      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:

摘自:http://www.cnblogs.com/willick/p/4177977.html  仅供参考学习

有时候你需要一个线程在接收到某个信号时,才开始执行,否则处于等待状态,这是一种基于信号的事件机制。.NET框架提供一个ManualResetEvent类来处理这类事件,它的 WaiOne 实例方法可使当前线程一直处于等待状态,直到接收到某个信号。它的Set方法用于打开发送信号。下面是一个信号机制的使用示例:

 1  //线程的信号机制
 2             #region
 3             var signal = new ManualResetEvent(false);
 4             DateTime beginTime = DateTime.Now;
 5             new Thread(() => {
 6                 Console.WriteLine("waiting for signal...");
 7                 signal.WaitOne();
 8                 signal.Dispose();
 9                 Console.WriteLine("Got signal");
10             }).Start();
11             Thread.Sleep(2000);
12             TimeSpan ts = (DateTime.Now - beginTime);
13             Console.WriteLine("已消耗啦"+ts.TotalMilliseconds);
14             signal.Set();
15 
16             Console.ReadKey();
17             #endregion

效果:

1 waiting for signal...
2 已消耗啦2003.1145
3 Got signal

当执行Set方法后,信号保持打开状态,可通过Reset方法将其关闭,若不再需要,通过Dispose将其释放。如果预期的等待时间很短,可以用ManualResetEventSlim代替ManualResetEvent,前者在等待时间较短时性能更好。信号机制非常有用,后面的日志案例会用到它。

 

未完待续。。。

 

线程的信号机制

标签:

原文地址:http://www.cnblogs.com/meiCode/p/4700123.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!