假设您有一个具有
的典型异步设计模式API如何使用.NET 3.5以同步方式调用此API,而不会在调用期间阻止消息泵?
答案 0 :(得分:1)
如果你想等待结果(同步调用)但不想阻止消息泵(假设你的意思是UI线程),你将不得不使用一个单独的线程来进行调用(并等待它)
使用async和await:
// current thread is the UI thread
// so create/use a Task to wait for the call
var task = Task.Factory.StartNew( () => { DoJobAsync().Wait()});
UI线程创建一个Task(T1)并立即返回。 T1在不同的线程上运行。该线程调用异步函数(它返回另一个任务T2),以便等待异步T1调用T2的结果。
这是非常人为的: