в следующем фрагменте
private async void FinishCommandExecute()
{
Console.WriteLine("FinishCommandExecute_1");
_granularBlobAnalyzer.SaveResult(SampleID, Operator, Comments);
Console.WriteLine("FinishCommandExecute_2");
await Task.Run(() => FlushCommandExecute());
Console.WriteLine("FinishCommandExecute_3");
State = GBAState.IDLE;
Console.WriteLine("FinishCommandExecute_4");
}
private async void FlushCommandExecute()
{
Console.WriteLine("FlushCommandExecute_1");
State = GBAState.FLUSHING;
Console.WriteLine("FlushCommandExecute_2");
await Task.Run(() => _granularBlobAnalyzer.Flush()); // Task to wrap sync method
Console.WriteLine("FlushCommandExecute_3");
State = GBAState.STOPPED;
Console.WriteLine("FlushCommandExecute_4");
}
Я вызываю FinishCommandExecute (она связана с кнопкой как команда), и я ожидаю, что команда конца вызовет сброс введите команду и дождитесь ее завершения, но она не дождется окончания ожидания внутри команды сброса ... и выполнение продолжится
, если вы посмотрите на комментарий, я бы ожидал следующее в консоли
- FinishCommandExecute_1
- FinishCommandExecute_2
- FlushCommandExecute_1
- FlushCommandExecute_2
- * FlueCom1024 * FlushCommandExecute_4
- Finish CommandExecute_3
- Finish CommandExecute_4
, в то время как фактическое значение:
- FinishCommandExecute_1
- FinishCommandExecute_2
- FlushCommandExecute_1
- FlushCommandExecute_2
- Finish CommandExecute_3
- FlushCommandExecute_3
- FlushCommandExecute_4
почему асинхронное ожидание не запускается при выполнении задачи во втором асинхронном методе