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

时间:2016-11-04 12:33:04

标签: c# asynchronous .net-4.0 task

我无法找到有关将代码从.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中看起来怎么样?

2 个答案:

答案 0 :(得分:2)

您将返回等待结果的结果,该结果是根据结果构建的。解决方案非常简单 - 删除await

return Sheet1;

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

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

答案 1 :(得分:2)

我用 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 ; } 解决了我的问题,这是我的代码:

clickMapItem