【发布时间】:2018-01-04 20:23:09
【问题描述】:
我希望 Residency 返回Task<ActionResult>。
public async Task<ActionResult> Residency()
{
DBResponse DataSource = await Residency_Manager.Residency_REPORT();
}
下面是 DBResponse 类:
public DBResponse(Int32 statusCode, string message, Object data)
{
this.StatusCode = statusCode;
this.Message = message;
this.Data = data;
}
当我等待 Residency_REPORT 函数时,它返回一个 DBResponse 对象并显示以下错误。
【问题讨论】:
-
向我们展示
Residency_REPORT的签名 -
Residency_Manager.Residency_REPORT应该返回一个Task<DBResponse>并且应该是一个异步方法。此外,您不应该将这么多参数传递给它。为什么这些不是类? -
不要发布图片链接。复制并粘贴代码和错误消息本身。
await不会通过魔法使方法异步,它 等待 已经是异步方法。如果Residency_REPORT没有返回一个任务,你就不能等待它。这与 ASP.NET MVC 无关 -
可能你需要
Task.Run和return View()或类似的东西,return await可以等待。但是Residency_Manager.Residency_REPORT在当前状态下可能是不可等待的。 -
@TetsuyaYamamoto 网络请求已经在他们自己的线程上运行。使用 Task.Run 只会将执行转移到新线程,浪费原始线程并且由于线程切换而导致性能下降
标签: c# asp.net-mvc async-await