0

我想在 C# 中锁定一个静态方法,这是 java 中同步的替代方法。

以下是方法

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 回答