无法使用异步/等待方法链

时间:2018-08-08 22:58:15

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

我有一个在.NET 4.6.1上运行的ASP.NET应用。

我无法在等待的.Sum()结果中使用GetInts()。编译器认为GetInts()是一项任务。 SumIntsOneLinerBroker()无法编译。

public Task<List<int>> GetInts() {
    var list = new List<int> { 4, 5 };

    return Task.FromResult(list);
}

public async Task<int> SumInts() {
    var ints = await GetInts();
    return ints.Sum();
}

public async Task<int> SumIntsOneLinerBroker() {
    return await GetInts().Sum();
}

public async Task<int> SumIntsOneLinerWorking() {
    return (await GetInts()).Sum();
}

2 个答案:

答案 0 :(得分:3)

有几种处理方法。最常见的可能是您在代码中显示并由Marc确认的括号。

另一种选择是.ContinueWith,它使您可以将第一个操作的结果传递给第二个操作。这是Microsoft Example。请记住,当您使用ContinueWith时,异常将被包裹在AggregateException中,这会改变您的异常处理。

答案 1 :(得分:-1)

由马克(Marc)确认,如第二幅图所示,括号括起来的方法是正确的方法。这里没什么。