爲什麼在SynchronizationContext.Current爲空時調用Task.Wait()和Task.Result並非100%安全?當SynchronizationContext.Current爲空時,我可以安全地使用Task.Wait嗎?
我有一個多線程但同步的服務。我正在用對HttpClient.PostAsXmlAsync的調用替換其中一個同步方法。該實現使用.Result將其轉換爲同步方法,以避免更改整個項目。但是,我們正在獲得有據可查的典型死鎖問題。
我不明白如果沒有同步上下文會出現死鎖。
也許你可以發表至少一些代碼。通過服務你的意思是Windows服務? – Evk
@Evk - 他可能意味着一個web服務 – Zegar
爲什麼你首先使用異步方法,如果你只是要等待他們完成?如果要執行同步操作,只需從一開始就使用固有的同步方法。如果你只是要等待它們,沒有任何目的*可以使一些方法異步。要麼是這樣,要麼只是使服務處理程序異步。 – Servy