Monitor关键字
Monitor提供同步访问对象的机制。
Monitor方法
Enter(Object) 在指定对象上获取排他锁。
Enter(Object,Boolean) 获取指定对象上的排他锁,并自动获取一个值,指示是否获取了该锁
Exit(Object) 释放指定对象上的排他锁
IsEntered(Object) 确定当前线程是否保留着指定对象上的锁
Pulse(Object) 通知等待队列中的线程锁定对象状态的更改
PulseAll(Object) 通知所有等待的线程锁定对象状态的更改
TryEnter(Object) 尝试获取指定对象的排他锁
TryEnter(Object,Boolean) 尝试获取指定对象上的排他锁,并自动设置一个值,指示是否获取了该锁
TryEnter(Object,Int32) 在指定的毫秒数内,尝试获取指定对象上的排他锁
TryEnter(Object,Int32,Boolean) 在指定的毫秒数内,尝试获取指定对象上的排他锁,并自动设置一个值,指示是否获取了该锁
Wait(Object) 释放对象上的锁并阻止当前线程,直到它重新获取该锁
Wait(Object,Int32) 释放对象上的锁并阻止当前线程,直到它重新获取该锁。如果已用指定的超时间隔,则线程进入等待队列
lock关键字实际上是一个语法糖,它将Monitor对象进行封装。
try { Monitor.Enter(obj); //dosomething(); } catch(Exception ex) { } finally { Monitor.Exit(obj); }