簡體   English   中英

線程池線程需要ConfigureAwait(false)嗎?

[英]ConfigureAwait(false) needed with threadpool threads?

假設我不在乎同步上下文,當我已經在ThreadPool線程中時,是否需要在await調用上使用.ConfigureAwait(false) 例如,我通過以下方式開始了異步操作:

await Task.Run(() => myService.DoSomething());

我知道重要的是,如果您不關心上下文,並且您位於UI線程或ASP.NET請求中,只是想知道它是否對異步操作提供了同樣的好處,而不是那些情況。

如果存在當前的同步上下文(即使運行代碼的線程是線程池線程),則將使用它。 如果您不希望使用該同步上下文,則需要使用ConfigureAwait(false) 如果沒有當前的同步上下文,則ConfigureAwait(false)不會執行任何操作,因為沒有要捕獲的同步上下文,並且您是否擁有它無關緊要。 如果要捕獲同步上下文(無論當前線程是否是線程池線程),那么就不要調用ConfigureAwait

簡而言之,是否作為線程池線程運行與是否應捕獲同步上下文的決定無關。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM