2016-11-04 1 views
1

Ich kann keine Informationen über Retargeting mein Code von .NET 4.5 zu 4.0 finden. Ich muss diese Anwendung unter Windows XP installieren.Äquivalent von Task.FromResult() von .NET 4.5 in. NET 4.0

meinen Code in .NET 4,5

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

In .NET 4.0 Methode FromResult existiert nicht. Jemand weiß, wie es in .NET 4.0 aussehen soll ??

+0

hinzufügen [ 'Microsoft Async'] (https://www.nuget.org/packages/Microsoft.Bcl.Async/) zu projizieren Pakete. – raidensan

+0

https://msdn.microsoft.com/en-us/library/hh194922(v=vs.110).aspx überprüfen Sie dies und auch in .Net 4 können Sie nicht async/erwarten von dem, was ich erinnere – mybirthname

+0

Immer noch gleich Problem. – P10trek

Antwort

2

Sie geben das erwartete Ergebnis einer Aufgabe zurück, das auf einem Ergebnis basiert. Die Lösung ist recht einfach - das await fallen:

return Sheet1; 

Das async Schlüsselwort in der Methodendeklaration darauf achtet, wird es in einer Aufgabe der Verpackung.

Wenn Sie aus irgendeinem Grund einen vorhandenen Wert in einer abgeschlossenen Aufgabe manuell umbrechen müssen, können Sie TaskCompletionSource verwenden - es ist ein bisschen klunker als Task.FromResult, aber nur ein bisschen.

0

ich mein Problem mit TaskCompletionSource gelöst, hier ist mein Code:

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 ; 
     } 
Verwandte Themen