假设您正在将方法异步调用到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 !
}
}
答案 0 :(得分:0)
使用.NET的异步模式,BackgroundWorker
或ManualResetEvent