假设您正在异步调用UI线程上的方法。
使用
UIDispatcher.BeginInvoke( new Action(_insert), DispatcherPriority.Normal, new object[] { } )您正在执行调用。从现在起,运行时环境决定何时执行该方法,而程序则继续其“正常”的执行路径。
我现在想知道在这些方法返回时是否有任何机制来同步这些异步执行的方法?似乎在使用多个线程时存在着几乎相同的问题。
但是,在被视为线程之前已经异步调用的返回方法是否被视为线程?似乎不是这样,因为通常的同步工作就像
lock (someObject) { //... }或者使用专用锁似乎不起作用。
附录:
我提出这个问题的实际情况如下:
异步调用的方法作为其最后一条语句调用静态类的return方法。在这个return方法中,必须同步一个常用的资源(列表)。考虑以下(类似概述的)代码片段,以举例说明:
// 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 !
}
}发布于 2012-07-09 15:19:07
要么使用.NET的异步模式BackgroundWorker,要么使用ManualResetEvent
http://msdn.microsoft.com/en-us/library/ms228969.aspx
https://stackoverflow.com/questions/11396827
复制相似问题