C#でMethod全体を排他ロックする

javaのsynchronized相当の機能、c#では属性を指定します。

using System.Runtime.CompilerServices;

[MethodImpl(MethodImplOptions.Synchronized)]
public void SomeMethod() {
  
  // sync code
  
}

プロパティのget/setにも以下のように指定できます。

public int SyncProperty
{
    [MethodImpl(MethodImplOptions.Synchronized)]
    get { 
        return i; 
    }
    [MethodImpl(MethodImplOptions.Synchronized)]
    set {
        i = value;
    }
}