我们有一个以下列方式处理传入消息的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