使用lambda的Task会产生编译时错误

本文关键字:编译时错误 Task lambda 使用 | 更新日期: 2023-09-27 17:49:02

我在StackOverflow和其他几个地方搜索过,但从未找到这个问题的确切答案。在WPF应用程序中,我试图使用lambda多行代码块实现任务,并且我得到了"并非所有代码路径都返回值"。我如何从这里返回一个Func<string> ?

private async void btnLongOperation_Click(object sender, RoutedEventArgs e)
    {
        lblResult.Content = "Commencing long-running operation...";
        var task = Task.Run<string>(() => 
        {
            Thread.Sleep(3000);
            lblResult.Content = "Finishing long-running operation...";
        });

        lblResult.Content = await task;
    }
Error   1   Not all code paths return a value in lambda expression of type 'System.Func<string>'

使用lambda的Task会产生编译时错误

Task.Run<string>给出类型为Func<string>的输入。这意味着它没有输入(()),必须返回一个字符串。所以这可能有帮助:

 var task = Task.Run<string>(() => 
    {
        Thread.Sleep(3000);
        //Here
        return "Finishing long-running operation...";
    });