Monitor 类通过向单个线程授予对象锁来控制对对象的访问。 对象锁提供限制访问代码块(通常称为临界区)的能力。 当一个线程拥有对象的锁时,其他任何线程都不能获取该锁。 还可以使用 Monitor 来确保不会允许其他任何线程访问正在由锁的所有者执行的应用程序代码节,除非另一个线程正在使用其他的锁定对象执行该代码。
作用和Lock相同
public class MonitorDemo { public void ShowMsg(object obj) { Monitor.Enter(typeof(MonitorDemo)); Console.WriteLine(string.Format("显示信息:{0},并停留5秒,当前时间:",obj.ToString(),DateTime.Now)); Thread.Sleep(5000); Monitor.Exit(typeof(MonitorDemo)); } } Thread thread = null; MonitorDemo monitor=new MonitorDemo(); for (int i = 0; i < 3; i++) { thread = new Thread(new ParameterizedThreadStart(monitor.ShowMsg)); thread.Start(i); }
运行结果:
Monitor Wait Pulse方法用起来可以实现线程互斥:
例子:http://www.cnblogs.com/free722/archive/2011/03/25/1995136.html