【发布时间】:2019-10-28 08:46:29
【问题描述】:
我有一个功能如下:
public static async Task<bool> DoSomething()
{
await Task.Run(() =>
{
//do something that takes a long time
bool success = ALongFunction();
return success;
});
}
上面的代码无法编译,因为它期望等待后的返回值。为什么是这样?任务中的代码在所有执行路径上都返回一个值,我认为等待之后的返回应该由等待机制处理。我应该在上面返回什么?我是否必须这样做:
public static async Task<bool> WriteMonitor(string filename, IMonitorAsync monitorAsync)
{
bool success = false;
await Task.Run(() =>
{
//do something that takes a long time
success = ALongFunction();
});
return success;
}
上面确实可以编译,但我希望顶部代码也可以编译。
【问题讨论】:
-
在你的第一个代码块中,
return语句属于Task.Run()使用的Func。您的外部方法不返回任何内容。这就像在嵌套循环中使用break;;你不希望跳出外循环,是吗? -
试试
return await Task.Run(() =>;) -
@Fildor 显然!多哈。随意回答,我会将其标记为答案。我相信将来会有其他人这样做......
-
我很想知道为什么我投了反对票。上述问题的哪些方面不符合论坛规则?
标签: c# async-await return