相当于.net 4.0中.net 4.5中的Task.FromResult()

本文关键字:net FromResult Task 相当于 中的 | 更新日期: 2023-09-27 18:16:14

我找不到关于我的代码从。net 4.5重定向到4.0的信息。我必须在Windows XP上安装这个应用程序。

我在。net 4.5中的代码

public async Task <IXLWorksheet> ImportFile(string fileToImport)
{
    ...
    return await Task.FromResult<IXLWorksheet>(Sheet1)
}

在。net 4.0方法FromResult不存在。有人知道它在。net 4.0中应该是什么样子吗?

相当于.net 4.0中.net 4.5中的Task.FromResult()

我解决了TaskCompletionSource的问题,下面是我的代码:

 public async Task <IXLWorksheet> ImportFile(string fileToImport)
        {
         ...
                TaskCompletionSource<IXLWorksheet> tcs1 = new TaskCompletionSource<IXLWorksheet>();
                Task<IXLWorksheet> t1 = tcs1.Task;
                tcs1.SetResult(tempFile.Worksheet(1));
                return await t1 ;
        }

您正在返回等待的任务结果,该任务是根据结果构造的。解决方法很简单——去掉await:

return Sheet1;

方法声明中的async关键字将负责将其包装在任务中。

如果,出于某种原因,您需要在已完成的任务中手动包装现有值,您可以使用TaskCompletionSource -它比Task.FromResult更笨拙,但只是一点点。