2016-05-10 96 views
-1

我的C#UI,客戶端/服務器應用程序是多線程還是異步? 現在我用多線程做了它。但是,這是正確的方式?應該 我將它改爲異步等待模式?C# - 服務器/客戶端多線程或異步

+0

在StackOverflow上有關於此主題的問題和解答的TON。但是,您的問題目前太寬泛,無法作爲重複鏈接,我正在投票結束。 –

回答

2

嗨異步/等待模式是多線程的最佳選擇。即使代碼異步運行,使用此模式也不會創建新線程。它使用基礎狀態機來實現異步性。當您處理所有請求在線程池線程中運行的客戶端/服務器應用程序時,這很好。拋開一個新的線程意味着你最終可能會服務較少的請求(因爲請求將被排隊等待線程)。使用異步調用時,由於線程在長時間運行的I/O或網絡調用期間未被阻塞,因此您將每秒處理更多請求。如果您有更多問題,請讓我知道。謝謝

+0

有沒有辦法在.net框架中執行這樣的異步操作3 –

+0

您好,至少需要.net 4.0才能使用TPL和.net 4.5來使用異步/等待模式。如果你使用.net 3.0,你最好的選擇是異步編程模型(APM)和基於事件的異步模式(EAP)。但是,這需要很多樣板代碼。請閱讀這兩個博客獲取更多信息[Link1](https://blogs.msdn.microsoft.com/dotnet/2012/04/03/async-in-4-5-worth-the-await/),[Link2 ](https://msdn.microsoft.com/en-us/library/dd997423(v = vs.110)的.aspx)。謝謝。 –

0

如果它是一個客戶端GUI應用程序,我會去異步等待的方法。在GUI上下文中使用異步等待感覺更「自然」。我編寫了一個Xamarin表單應用程序,從azure中的數據庫獲取數據庫條目,並且使用async-await執行此操作非常簡單。