我的功能如下:
query_set
上面的代码未编译,因为它在等待之后期望返回值。为什么是这样?任务中的代码在所有执行路径上返回一个值,我认为应由await机制处理在await之后返回此值。我应该在上面返回什么?我需要做这样的事情吗?
public static async Task<bool> DoSomething()
{
await Task.Run(() =>
{
//do something that takes a long time
bool success = ALongFunction();
return success;
});
}
上面的代码确实可以编译,但是我希望上面的代码也可以编译。
答案 0 :(得分:3)
您返回一个bool
值,而您的方法实际上返回了一个Task<bool>
。
更改方法以返回等待的Task
。
return await Task.Run(...);
答案 1 :(得分:0)
在当前形式下,该函数仅返回任务(不返回Task<bool>
)。
public static async Task<bool> DoSomething()
{
await Task.Run(() =>
{
return AFunctionThatTakesALongTime();
});
}
等同于以下代码段:
public static async Task<bool> DoSomething()
{
bool r = await Task.Run(() =>
{
return AFunctionThatTakesALongTime();
});
// not returning r
}
return await Task.Run(() => ...)