2016-11-04 187 views
1

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

我在.NET 4.5

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

代码在.NET 4.0方法FromResult不存在。有人知道它应该在.NET 4.0中看起来如何?

+0

添加['微软Async'(https://www.nuget.org/packages/Microsoft.Bcl.Async/)项目包。 – raidensan

+0

https://msdn.microsoft.com/en-us/library/hh194922(v=vs.110).aspx检查这一点,并在.Net 4中,你不能使用异步/等待我记得 – mybirthname

+0

仍然是相同的问题。 – P10trek

回答

2

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

return Sheet1; 

async关键字在方法声明将在一个工作包裹它的照顾。

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

0

我解决我的问题与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 ; 
     }