【发布时间】:2012-10-15 19:52:36
【问题描述】:
我提出这个问题的动机是因为我正在创建一个 .net Web API 项目,该项目将使用具有同步方法的现有 neo4j rest api 客户端。我想通过使用异步方法来利用一些性能提升,但我想避免进入 neo4j api 库并重构同步方法以返回异步方法。我想知道是否将对同步方法的调用包装在 await Task.Run() 中是否有益。具体来说,在第一个示例中,当来自 httpClient 的异步结果调用 Wait() 方法时会发生什么,但整个事情都包装在另一个 await 中。
另外请记住,我将在 AppHarbor 云上使用我认为是单个虚拟内核的东西运行它。
下面也是这样
//what happens with the synchronous rest api client I am using
HttpResponseMessage SendHttpRequest(HttpRequestMessage request)
{
var requestTask = httpClient.SendAsync(request);
requestTask.Wait();
return requestTask.Result;
}
object result = await Task.Run(() =>
{
return SendHttpRequest(request);
});
性能与
相似 return httpClient.SendAsync(request)
【问题讨论】:
标签: .net async-await asp.net-web-api