MainTask
не должно быть Task
, оно должно быть Func<Task>
(или, в этом случае, поскольку асинхронная операция, по-видимому, предоставляет логическое значение Func<Task<bool>>
, позволяющее запустить асинхронныйоперации в любое время, просто вызвав метод.
Так определите его как:
Func<Task<bool>> AsyncOperation {get;set;}
Используйте его как:
while(!await AsyncOperation())
{
//do nothing
}
Что касается его назначения, выпросто нужно назначить асинхронный метод, который у вас есть:
AsyncOperation = GetResult;
Обратите внимание, что вы действительно не должны использовать конструктор Task
каждый раз. Не работайте с незапущенными задачами, это только приводит к путанице.нет необходимости использовать Task.Run
для вызова асинхронного метода. Это уже асинхронный . Также нет необходимости использовать асинхронную лямбду для вызова асинхронного метода, обе эти вещи просто добавляют накладные расходы и не добавляют значения.