.NET 4.0 中 .NET 4.5 的 Task.FromResult() 等效项

Equivalent of Task.FromResult() from .NET 4.5 in .NET 4.0

我找不到有关将我的代码从 .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 中的外观吗??

您正在返回任务的等待结果,该任务是根据结果构建的。解决方案相当简单 - 删除 await:

return Sheet1;

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

如果出于某种原因,您需要在已完成的任务中手动包装现有值,您可以使用 TaskCompletionSource - 它比 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 ;
        }