我有一個.NET 4.5.1 WCF服務,它處理來自將由成千上萬的用戶使用的應用程序的同步。我目前使用Task.WaitAll,如下所示,它工作正常,但我讀到,這是不好的,可能會導致死鎖等我相信我試過WhenAll在過去,它沒有工作,我不記得作爲問題爲了確保我正確地做到這一點,我再次回到此處進行審查。我關心的是在這種使用中是否需要和優先使用阻塞,因此,WCF服務方法爲什麼WaitAll似乎沒有問題。在WCF方法中使用Task.WaitAll
我有大約十幾個方法,每個方法都會更新實體框架6中的一個實體,使用現有數據處理傳入數據並進行必要的更改。這些方法中的每一個都可能很昂貴,所以我想要使用並行性來主要使這個強大的24核心服務器上的所有方法同時工作。每個方法都以Task的形式返回,並將其內容包裝在Task.Run中。 DoSync方法創建了一個新的List,並將這些同步方法中的每一個添加到列表中。然後我調用Task.WaitAll(taskList.ToArray()),所有的工作都很好。
這是否正確嗎?我想確保此方法可以很好地擴展,不會導致問題,並且可以在WCF服務場景中正常工作。
我知道這個問題是舊的,但幾乎沒有理由在WCF服務中使用異步。對於並行性,您可以在其他情況下使用'Parallel.For/Foreach'或PLINQ'.AsParallel()'。 –