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

我无法找到有关将我的代码从.NET 4.5重定向到4.0的信息。 我必须在Windows XP上安装此应用程序。

我在.NET 4.5中的代码

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

在.NET 4.0方法中,FromResult不存在。 有人知道它应该在.NET 4.0中看起来怎么样?

您将返回等待结果的结果,该结果是根据结果构建的。 解决方案相当简单 – 放弃await

 return Sheet1; 

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

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

我用TaskCompletionSource解决了我的问题,这是我的代码:

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