- 主题:configureAwait是个啥玩意儿啊?
传true 或 false 有啥区别呢?
网上的讲解看不太懂
--
FROM 125.33.219.*
When an asynchronous method awaits a Task directly, continuation usually occurs in the same thread that created the task, depending on the async context. This behavior can be costly in terms of performance and can result in a deadlock on the UI thread. To avoid these problems, call Task.ConfigureAwait(false).
--
FROM 125.70.76.*
如果是纯后台service,UI不会直接调用的。
就不用关心这玩意,对吧?
【 在 mingtong (。。。) 的大作中提到: 】
: When an asynchronous method awaits a Task directly, continuation usually occurs in the same thread that created the task, depending on the async context. This behavior can be costly in terms of performance and can result in a deadlock on the UI thread. To avoid these problems, call Task.ConfigureAwait(false).
: --
:
:
--
FROM 125.33.219.*
console和asp.net core不用关心这个
【 在 Millor 的大作中提到: 】
: 如果是纯后台service,UI不会直接调用的。
: 就不用关心这玩意,对吧?
: To avoid these problems, call Task.ConfigureAwait(false).
: ...................
--
FROM 67.161.19.*
在执行await的线程存在SynchronizedContext的
在await执行结束后会回到SynchronizedContext线程
如果configureAwait为false,则await后面的代码不会执行在SynchronizedContext线程
比如典型的UI线程
private async void eventHandler(Object o, EventArgs args)
{
//此处执行在UI线程
before await code;
//异步调用
var r = await localMethod().ConfigureAwait(false);
//此处代码不会执行在UI线程
after await code;
}
如果不调用ConfigureAwait(false);
after await code 会回到UI线程执行
--
FROM 1.20.4.*