У меня есть следующий код и он прекрасно работает в .NET 4.5C# Task.Run эквивалент в .NET 4.0
return Task.Run(async() => await MyAsyncMethodThatReturnsAnObject()).Result;
Теперь мне нужно, чтобы заставить ее работать на .NET 4.0, поэтому я придумал:
return Task.Factory.StartNew<object>(async() => { await MyAsyncMethodThatReturnsAnObject()}).Result;
Но это дает мне эту ошибку:
'Task<object>' does not contain a definition for GetAwaiter and no extension method 'GetAwaiter' acception the first argument of type 'Task<object>'
MyAsyncMethodThatReturnsAnObject
является заводским методом, а его тип возврата - object
.
Делегат 'асинхронной() => ждут MyAsyncMethodThatReturnsAnObject()' эквивалентно '() => MyAsyncMethodThatReturnsAnObject()' в обоих случаев. – spender
Лучший вопрос, почему вы это делаете? вы освобождаете поток, чтобы заблокировать другого? –
@spender Ваше предложение сделало мой код компилируемым, что здорово. Однако, когда я сделал то же изменение в вызывающем, это не удалось: 'Невозможно преобразовать тип выражения 'System.Threading.Tasks.Task' для возврата типа 'System.Threading.Tasks.Task