2016-09-27 14 views
0

TaskHttpResponseMessageタイプをHttpResponseMessageタイプに戻す方法はありますか?以下はコードです。Task <HttpResponseMessage>の戻り値の型をHttpResponseMessage型に戻す方法はありますか?

private HttpResponseMessage Process(string receiver,HttpRequestMessage request) 
     { 
       Reciever test = new Reciever(); 
       Task<HttpResponseMessage> res= test.ReceiveAsync(receiver, request); 
       return res;  
     } 

実は私ReceiveAsync方法は非同期タイプのものであり、私は非同期型であるとプロセス方法をたくありません。

これに関するご意見はありますか?

ありがとうございます!

+3

をあなたは私がいけない正しい答え(* "を除外したらプロセスメソッドが非同期型であることを望みます。 "*)実際にはこれが適切な修正ではない理由を正当に正当化する必要があります – spender

+0

res.Resultを行うことができますが、悪い習慣と考えることができます。可能であれば、await/asyncを「すべて停止」することをお勧めします。 – EJoshuaS

+0

spenderのコメントに追加するには、基本的な作業が非同期操作である必要があるのはなぜですか?同期コードが必要な場合は問題ありませんが、それを同期させることができます。 – Servy

答えて

-1

これは私が考えて仕事ができる:

EDIT:それはデッドロックになるよう、これをしないでください - 感謝@Servy

private HttpResponseMessage Process(string receiver, HttpRequestMessage request) 
{ 
    return ProcessAsync(receiver, request).Result; 
} 

private async Task<HttpResponseMessage> ProcessAsync(string receiver, HttpRequestMessage request) 
{ 
    Reciever test = new Reciever(); 
    var res = await test.ReceiveAsync(receiver, request); 
    return res; 
} 
+0

ProcessAsync.Resultを使用するのではなく、async/awaitを "一番下に"使用する方が良いです。私はOPがこのようなものを求めていたと思う。 – EJoshuaS

+0

私は完全にasync/awaitのすべての方法に同意する。私はこれのようには決してしませんが、それは彼が求めているものであり、うまくいくでしょう。 –

+0

このコードは、同期コンテキストがあればいつでもデッドロックします。 – Servy