Ich habe den folgenden Code und es funktioniert gut in .NET 4,5C# Task.Run Äquivalent in .NET 4.0
return Task.Run(async() => await MyAsyncMethodThatReturnsAnObject()).Result;
Jetzt muss ich es auf .NET 4.0, so dass ich laufen kam mit:
return Task.Factory.StartNew<object>(async() => { await MyAsyncMethodThatReturnsAnObject()}).Result;
Aber es ist mir diesen Fehler geben:
'Task<object>' does not contain a definition for GetAwaiter and no extension method 'GetAwaiter' acception the first argument of type 'Task<object>'
MyAsyncMethodThatReturnsAnObject
ist eine Factory-Methode und der Rückgabetyp lautet object
.
Der Delegierte 'async() => erwarten MyAsyncMethodThatReturnsAnObject() zu arbeiten' entspricht '() => MyAsyncMethodThatReturnsAnObject()' in beide Fälle. – spender
Bessere Frage ist, warum machst du das? hast du einen Thread freigegeben, um einen anderen zu blockieren? –
@spender Ihr Vorschlag hat meinen Code kompiliert, was großartig ist. Jedoch, als ich die gleiche Änderung in der Aufrufer es fehlgeschlagen: "Kann nicht Ausdruck Typ konvertieren 'System.Threading.Tasks.Task' zurück zum Typ 'System.Threading.Tasks.Task