为什么我不需要在任务中包含此异步结果?

时间:2018-03-24 20:26:22

标签: c# .net asynchronous

我有以下异步方法:

public async Task<Result> Create(ModelStateDictionary modelState, TCreateViewModel postedModel)
{
    var result = new Result();
    if (! modelState.IsValid)
    {
        result.CopyErrorsFromModelState(modelState);
        return result;
    }

    // never reached if modelState is invalid
    var attemptCreateResult = await AttemptCreate(dataModel);
    result.MergeResult(attemptCreateResult);

    return result;
}

说我把它改成了下面的。 (我知道它有点愚蠢,但它只是为了证明。)

public async Task<Result> Create(ModelStateDictionary modelState, TCreateViewModel postedModel)
{
    var result = new Result();
    if (! modelState.IsValid)
    {
        result.CopyErrorsFromModelState(modelState);
    }

    return await Task.FromResult(result);
}

如果ModelState无效,则会遵循完全相同的代码路径。

然而,首先,我可以直接返回result。在第二部分,我将被要求将result包裹在Task.FromResult()中。

有人可以向我解释为什么会这样吗?

注意:我真的很难将这个问题弄清楚,并且不确定我是否已经成功。我欢迎任何修改以澄清它。谢谢。

0 个答案:

没有答案