我們有一個以下列方式處理傳入消息的WCF服務:在任務中進行異步/等待數據庫調用?
public bool ProcessMessage(string message)
{
var returnValue = GetReturnValue();
Task.Run(() => {
//do some things with the message
UpdateDatabase();
SendRepliesOverNetwork();
});
return returnValue;
}
在努力處理儘可能多的信息越好,我們在這裏添加任務。我們希望儘快將returnValue返回給調用者,並讓Task完成它的工作。
我的問題:使用等待異步數據庫調用和/或使用異步方法進行網絡回覆有什麼優勢嗎?
我很謹慎,因爲我認爲這可能會造成太多的上下文切換。我們已經看到該應用使用了100多個加載線程。
這真的取決於你的應用程序的情況下,你要立即進行發送數據庫更新後UI響應,還是你想要做的性能考慮? –
我不認爲你在等待任何東西:你在ThreadPool上排隊工作並立即返回給調用者。 –
@KyleC:表現。試圖儘可能快地處理儘可能多的消息。 – jeremywho