gpt4 book ai didi

c# - 在异步方法中返回 Task.Run

转载 作者:太空宇宙 更新时间:2023-11-03 18:21:15 26 4
gpt4 key购买 nike

你会如何重写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());
}

等待结果:

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();
}

(请注意,这在很大程度上取决于同步上下文,如果有的话)

关于c# - 在异步方法中返回 Task.Run,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52966688/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com