【问题标题】:Error: not all code paths return a value for an awaitable function错误:并非所有代码路径都返回等待函数的值
【发布时间】:2016-10-05 11:53:58
【问题描述】:

我有一段代码:

...
await func();

其中函数“func”定义为:

private Task func()
{
}

这个函数定义给出了一个错误:

func():并非所有代码路径都返回值。

这里需要我提供什么样的价值?

【问题讨论】:

    标签: c# uwp


    【解决方案1】:

    您的函数中缺少 async 关键字:

    private async Task func()
    {
    }
    

    如果没有它,您将定义一个返回 Task 类型对象的函数,但您没有 return someTask; 行,因此会出现编译错误。所以除非你添加它,否则你将不得不返回一些任务。

    否则,当指定async 关键字时,您声明此函数将执行一些可以等待的代码。如果其中没有await 任何Task,您将收到以下警告:"This async method lacks 'await' operators and will run synchronously."。有关警告消息的更多信息,请阅读this question

    这会更好地解释How and When to use async and await

    【讨论】:

    • 当我这样定义它时,我得到一个警告:“这个异步方法缺少 'await' 运算符,将同步运行。”
    • @Kibernetik - 这有助于您理解问题吗?
    • 非常感谢您提供的链接 Gilad Green!我会将您的答案标记为解决方案,并将对其进行研究。似乎我对等待/异步功能缺乏一些基本的了解......
    【解决方案2】:

    你有一个方法的返回类型,但你没有返回任何东西。

    private Task func()
    {
      return new Task();//the task
    }
    

    【讨论】:

    • 但是我的其他函数也有任务返回类型(但它们是异步的)也没有返回任何东西,也没有给出这种错误。
    • Gilad Green 搞定了这个
    猜你喜欢
    • 2013-07-01
    • 2014-04-16
    • 2015-02-07
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多