选择如何重构Web应用以使用异步/等待的方式

时间:2018-11-07 10:35:59

标签: c# asp.net-mvc async-await

我正在尝试将我们的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());呢?可以吗

能否请您解释哪种情况会更好?

0 个答案:

没有答案