Async / Await + FromEvent方法

时间:2013-01-23 18:28:46

标签: c# multithreading asynchronous async-await

基于以下问题: General purpose FromEvent method

我怎么知道我的应用程序中哪个线程会返回该事件? 我可以以某种方式指定它将继续哪个线程? 使用此功能的线程会发生什么?

当我使用WPF(Dispatcher / Main / UI Thread)时,这些响应似乎很明显,但如果我使用线程MTA,STA,Reactive,ThreadPool(Task / BackgroundWorker),我怎么能预测会发生什么?

使用task.Wait()是否有任何实际好处(如果我不必担心锁定线程)?

1 个答案:

答案 0 :(得分:2)

如果您await Task,则会捕获一个“上下文”并用于恢复async方法。这个“上下文”是当前的SynchronizationContext,除非它是null,在这种情况下它是当前的TaskScheduler(这些天通常是线程池调度程序)。

如果您正在进行async编程,则应该使用await而不是WaitWait can cause deadlocks, as I explain on my blog

您可能还会发现我的async/await intro有帮助。