Я не уверен, почему ты так стараешься избежать await
.Я думаю, что это хорошая идея, требовать его для такого рода кода, потому что было бы трудно сказать, что код на самом деле делает иначе.Поэтому я считаю, что использование await
таким способом, вероятно, является лучшим вариантом.
Кроме того, это хорошая идея, если вы можете избегать async void
методов, так как вы не можете перехватить исключения, которые они выдают.
Я могу представить, что есть способы избежать написания async
, например:
npc.AddAction(n => n.Say("Hello!"))
.AddAction(n => n.WaitForOk())
.AddAction(n => n.Say("This is an example of some weird crap."))
.AddAction(n => n.WaitForOk());
npc.Run();
Здесь Run()
обрабатывает список действий, созданных с использованием AddAction()
и использует await
где необходимо.
Но я сомневаюсь, что вы можете сделать это так же просто, как ваш код с await
s.(Кроме того, реализация любого вида потока управления в коде, подобном этому, сделает его действительно нечитаемым.)