如何重写TaskOfTResult_MethodAsync以避免错误:由于这是一个异步方法,返回表达式必须是类型int而不是Task<int>.
private static async Task<int> TaskOfTResult_MethodAsync()
{
    return Task.Run(() => ComplexCalculation());
}
private static int ComplexCalculation()
{
    double x = 2;
    for (int i = 1; i< 10000000; i++)
    {
        x += Math.Sqrt(x) / i;
    }
    return (int)x;
}
简单; 或者不要成功async:
private static Task<int> TaskOfTResult_MethodAsync()
{
    return Task.Run(() => ComplexCalculation());
}
或await结果:
private static async Task<int> TaskOfTResult_MethodAsync()
{
    return await Task.Run(() => ComplexCalculation());
}
(await在生成的机器方面添加这里更昂贵,但有更明显/可靠的异常处理等)
注意:您也可以使用Task.Yield:
private static async Task<int> TaskOfTResult_MethodAsync()
{
    await Task.Yield();
    return ComplexCalculation();
}
(请注意,这取决于sync-context,如果有的话)
| 归档时间: | 
 | 
| 查看次数: | 325 次 | 
| 最近记录: |