2013-05-10 24 views
0

假設您正在創建一個庫,以便在多個應用程序之間共享,這些應用程序可能存在一些完全同步的代碼庫。該庫的目的是使用HttpClient使用異步等待來執行Web服務調用。庫類型遠程Web服務調用和HttpClient ConfigureAwait(false)

鑑於這種情況類似於

var client = new HttpClient(....) { .... } 
var response = await client.GetAsync("Users/").ConfigureAwait(false); 

應該都是異步的await使用包括ConfigureAwait(false)在任何時候使用?

在包含該錯誤設置之前,此代碼在同步應用程序中消耗時看起來會死鎖。

回答

3

是的,您應該在所有庫代碼中包含ConfigureAwait。我不建議在async方法上使用同步阻塞,但如果您始終使用ConfigureAwait,則可行。

作爲副作用,ConfigureAwait也將提高您的表現。

我描述了爲什麼這項工作詳細on my bloga recent MSDN article

+0

謝謝斯蒂芬,我發現的資源導致我使用ConfigureAwait來修復死鎖或任何混亂髮生沒有,我似乎推斷我應該在圖書館的所有地方使用它,但我總是有明確的引用不只是我爲什麼做事的假設。 – 2013-05-10 15:27:01

相關問題