我正在尝试将我们的Web应用程序切换为使用异步/等待控制器操作。并找到了两种方法可以完成
public async Task<ActionResult> Document(Guid guid, string fileName) {
if (fileName == null)
return ForbiddenResult();
return await RetrieveFileAsync(guid, fileName);
}
public Task<ActionResult> Document2(Guid guid, string fileName) {
if (fileName == null)
return Task.FromResult(ForbiddenResult());
return RetrieveFileAsync(guid, fileName));
}
RetrieveFileAsync
-是内部方法,它返回Task<ActionResult>
(在调用RetrieveFile
之前)。
我是异步/等待世界中的新手,但据我所知,在第一种情况下,将生成状态机,我们将等待RetrieveFileAsync
方法中Document
的结果。
对于Document2
,我们只返回Task并在该方法将要调用的地方等待(没有状态机)。所以,应该是更好的方法,对吗?但是Task.FromResult(ForbiddenResult());
呢?可以吗
能否请您解释哪种情况会更好?