.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 ; }