Приведенный ниже код работает для того, что я делаю, однако мне любопытно, не является ли мое использование Task.Delay() лучшей практикой. Мне нужна задержка, чтобы у GameHandler было достаточно времени для обработки моих нажатий клавиш. Тем не менее, мне интересно, есть ли лучший подход к выполнению чего-то подобного.
async public Task<bool> CloseMenusAsync(CancellationToken token)
{
while (GameHandler.Menu.IsOpen && !token.IsCancellationRequested)
{
if (GameHandler.Menu.IsOpen && GameHandler.Menu.DialogText.Question == "Open")
{
GameHandler.SendKeyPress(KeyCode.DownArrow);
await Task.Delay(150);
GameHandler.SendKeyPress(KeyCode.EnterKey);
await Task.Delay(150);
}
if (GameHandler.Menu.IsOpen && GameHandler.Menu.Selection == "Trade")
{
GameHandler.SendKeyPress(KeyCode.EscapeKey);
await Task.Delay(150);
GameHandler.SendKeyPress(KeyCode.EnterKey);
await Task.Delay(150);
}
GameHandler.SendKeyPress(KeyCode.EscapeKey);
await Task.Delay(150);
}
return !GameHandler.Menu.IsOpen;
}