0

Javaでの同期の代わりに、C#で静的メソッドをロックしたいと思います。

以下はその方法です

public synchronized static  void UpdateDialListFile(String filePath, int lineno,
        String lineToBeInserted)

今、私はこの関数をC#で実装しています、同期の代替手段がC#でどのように機能するか

上記のメソッドは、スレッド内から次のように呼び出されています。

 new DialList(oDialInfo.FileName,oDialInfo.AppId,oDialInfo.AppCode,
        pausetime,oDialInfo, PropVal).start();
4

3 に答える 3

2

[MethodImpl(MethodImplOptions.Synchronized)]

メソッド全体を同期する場合は、これを使用できます。

同様の質問:

Javaの同期キーワードのC#バージョン?

于 2012-09-04T18:56:40.543 に答える
1

このようなlockステートメントを使用して、クリティカルセクションまたはリソースへのアクセスをシリアル化できます。ガードオブジェクトの範囲/意味は完全にあなた次第です:

public class Widget
{
  // scope of 'latch'/what it represents is up to you.
  private static readonly object latch = new object() ;

  public void DoSomething()
  {
    DoSomethingReentrant() ;

    lock ( latch )
    {
       // nobody else may enter this critical section
       // (or any other critical section guarded by 'latch'
       // until you exit the body of the 'lock' statement.
       SerializedAccessDependentUponLatch() ;
    }
    DoSomethingElseReentrant() ;
    return ;
  }
}

CLRで使用可能なその他の同期プリミティブは、http://msdn.microsoft.com/en-us/library/ms228964(v = vs.110).aspxにリストされています

于 2012-09-04T19:08:42.067 に答える
0

Monitor.EnterおよびMonitor.Exitを使用して、クリティカルセクションをロックすることもできます。

于 2012-09-04T19:35:42.133 に答える