如何将多线程调用同步到同一方法

Tim*_*ker 0 c# multithreading

我有一个从多个线程调用的方法.每个线程都有自己的类实例.什么是同步访问代码最直接的方法?

我不能只用lock(obj)其中obj的一个实例成员,但它足以只需要声明obj的类静态?所以对该方法的所有调用都将锁定在同一个对象上?一个简单的说明如下:

class Foo
{
    static object locker = new object();

    public void Method()
    {
        lock(locker)
        {
            //do work
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:这位//do work正在写入数据库.为什么我需要序列化写入需要3个页面来解释这个特定的实例,我真的不想重温所有引导我到这一点的细节.我所要做的就是确保每个记录在写下一个记录之前完成了写作.

Han*_*ant 8

当每个线程都有自己的实例时,为什么需要任何同步?保护共享的资源,不要担心非共享状态.这会自动帮助您找到锁定对象的最佳位置.如果它是对象共有的静态成员,那么你确实也需要一个静态锁定对象.