0

次のようなコード(1番目)を書くことはできますか

public Task<HttpResponseMessage> Get(int id)
{
 return Task<HttpResponseMessage>.Factory.StartNew(() =>
  Request.CreateResponse(HttpStatusCode.OK, JsonConvert.SerializeObject(model)));

}

次のようなコード(2番目)を書くことはできますか

public Task<HttpResponseMessage> Put(int id, string value)
{
   return Task<HttpResponseMessage>.Factory.StartNew(() =>
     Request.CreateResponse(HttpStatusCode.OK));

}

を使用して上記のPutメソッドを 呼び出したいHttpclient.PutAsJsonAsync()。.Net 4.0 で?

またはそれを行うためのより良い方法はありますか?だから私は非同期呼び出しの恩恵を受けることができますか?

4

1 に答える 1

3

コード内の操作が非同期 (またはブロック) でない場合、非同期操作を行う意味はありません。Task<HttpResponseMessage>あなたが持っている2つの例では、操作は応答を返すだけなので、応答を使用する必要はありませんHttpResponseMessage

したがって、あなたの質問により直接的に、はい、そのようなコードを書くことができますが、必要以上に複雑であり、(新しいタスクを作成するために) 不必要なコンテキスト スイッチが発生し、全体的にパフォーマンスが低下します。あなたはそれをすることができますが、すべきではありません。

于 2013-04-10T19:38:31.613 に答える