c# – 有没有办法强制async/await继续第一个可用的线程?

关于C#5.0的一个很酷的事情是async / await关键字以及它如何简化你曾经用任务并行库(TPL)编写的管道.

我的问题是,如果你有线程无关的代码,并且碰巧在主线程上触发异步操作(读取:UI线程),但你不一定关心是否在主线程上发生了延续,那么你能否告诉异步/等待范例,你希望它继续在第一个可用的线程上,即使它不是主线程?

我认为能够做到这一点将大大提高某些场景的效率,但不是一个灵丹妙药.

最佳答案
如果您不关心方法的其余部分在哪里继续,请使用Task.ConfigureAwait

await foo.DoSomethingAsync().ConfigureAwait(continueOnCapturedContext: false);

(您不必在此处使用命名参数,但它可以提高清晰度.)

有关更多详细信息,请参阅Stephen Cleary’s “best practices” article的“配置上下文”部分.

转载注明原文:c# – 有没有办法强制async/await继续第一个可用的线程? - 代码日志