MethodImplOptions.Synchronized做了什么?

时间:2010-02-08 17:49:48

标签: .net multithreading

MethodImplOptions.Synchronized做什么?

下面的代码是

[MethodImpl(MethodImplOptions.Synchronized)]
public void Method()
{
    MethodImpl();
}

相当于

public void Method()
{
    lock(this)
    {
        MethodImpl();
    }
}

3 个答案:

答案 0 :(得分:45)

Mr. Jon Skeet在另一个site上回答了这个问题。

来自帖子的引用

  

这相当于将lock(this)放在整个方法调用中。

该帖子有更多示例代码。

答案 1 :(得分:6)

对于静态方法,它与:

相同
public class MyClass
{
    public static void Method()
    {
        lock(typeof(MyClass))
        {
           MethodImpl();
        }
    }
}

http://social.msdn.microsoft.com/Forums/en-US/b6a72e00-d4cc-4f29-a6a0-b27551f78b9b/methodimploptionssynchronized-vs-lock

答案 2 :(得分:4)