【发布时间】:2015-08-10 15:22:00
【问题描述】:
我有一个具有以下抽象方法的基本控制器:
[HttpDelete]
public abstract Task<IHttpActionResult> Delete(int id);
在一个特定的控制器中,我不想实现删除,所以方法如下:
public override async Task<IHttpActionResult> Delete(int id)
{
return ResponseMessage(Request.CreateResponse(HttpStatusCode.MethodNotAllowed, new NotSupportedException()));
}
虽然上面的代码可以编译,但我得到一个警告:
此异步方法缺少“等待”运算符,将同步运行。考虑使用 'await' 运算符来等待非阻塞 API 调用,或使用 'await Task.Run(...)' 在后台线程上执行 CPU 密集型工作。
除了忽略上面的警告,有没有更好的选择(即改变上面的代码),这样这个警告就不会发生?
编辑
我把这行改成:
return await Task.Run(() => ResponseMessage(Request.CreateResponse(HttpStatusCode.MethodNotAllowed, new NotSupportedException())));
这将删除警告。但是,有没有更好的解决方案?
【问题讨论】:
-
如果您不想允许删除操作,为什么要从它派生?
标签: c# visual-studio-2012 asp.net-web-api async-await task-parallel-library