この質問の動機は、同期メソッドを持つ既存のneo4jRestAPIクライアントを使用する.netWebAPIプロジェクトを作成しているためです。非同期メソッドを使用することでパフォーマンスが向上することを利用したいのですが、neo4j apiライブラリにアクセスして、同期メソッドをリファクタリングして非同期メソッドを返すことは避けたいと思います。同期メソッドへの呼び出しをawaitTask.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)