我怎样才能在C#中使用互斥信号量a.k.a JAVA中的同步函数来保护我的函数
答案 0 :(得分:10)
没有好办法,除了自己动手:
private readonly object _locker = new object();
public void MyMethod()
{
lock (_locker) {
// Do something
}
}
答案 1 :(得分:4)
你不希望像Java这样的同步函数 - 它们是个坏主意,因为它们使用了其他可能干扰的锁构造。你想要的是一个锁定对象。基本上,在要保护的类中,创建一个类型为object
的私有成员变量private readonly object lock_ = new object();
然后在你需要同步的任何方法中,使用lock构造自动进入和离开锁: -
public void SomeMethod()
{
lock(lock_)
{
// ...... Do Stuff .........
}
}
答案 2 :(得分:1)
答案 3 :(得分:0)
正如约翰所说,你可以使用lock ()
,这与Monitor.Enter和Monitor.Exit是一样的。如果需要跨进程互斥锁,请使用Mutex类。