同步功能

时间:2010-05-12 19:39:49

标签: c# .net multithreading synchronization

我怎样才能在C#中使用互斥信号量a.k.a JAVA中的同步函数来保护我的函数

4 个答案:

答案 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类。