0

我可以像下面这样写代码(第一个)吗

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

}

我可以像下面这样写代码(第二个)吗

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

}

使用 Httpclient.PutAsJsonAsync(). 在.Net 4.0 中?

或者有什么更好的方法来做到这一点?所以我可以利用异步调用的好处吗?

4

1 回答 1

3

如果您的代码中的所有操作都不是异步的(或阻塞的),那么进行异步操作是没有意义的。在你的两个例子中,操作只是返回一个响应,所以你不需要使用Task<HttpResponseMessage>响应,使用HttpResponseMessage就可以了。

所以,更直接地回答你的问题,是的,你可以编写这样的代码,但它比必要的更复杂,会导致不必要的上下文切换(创建新任务),并且整体性能较低。你可以这样做,但你不应该这样做。

于 2013-04-10T19:38:31.613 回答