2016-11-04 133 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 ; 
     }