同步异步调用方法?

时间:2012-07-09 14:14:41

标签: c# asynchronous synchronization method-invocation

假设您正在将方法异步调用到UI线程上。

使用

UIDispatcher.BeginInvoke( new Action(_insert), DispatcherPriority.Normal, new object[] { } )

你正在进行调用。从现在起,运行时环境决定何时执行该方法,而程序继续其“正常”执行路径。

我现在想知道是否有任何机制在返回时同步这些异步执行的方法?似乎存在与使用多个线程时几乎相同的问题。

但是在被认为是一个线程之前,是一个异步调用的返回方法吗?它似乎不是这样,因为通常的同步工作,如

lock (someObject) { //... }

或使用专用锁似乎无法正常工作。

附录

我出现此问题的实际情况如下:

异步调用的方法将最后一个语句调用为静态类的return方法。在此return方法中,必须同步常用资源(List)。请考虑以下(类似概述)代码剪切以举例说明:

// A simple method that gets invoked asynchronously
public void _insert () {

    // do some code

    StaticClass.Returned();
}


public static StaticClass {

   //...

   public static void Returned () {

        // use a shared resource !
   }

}

1 个答案:

答案 0 :(得分:0)

使用.NET的异步模式,BackgroundWorkerManualResetEvent

http://msdn.microsoft.com/en-us/library/ms228969.aspx