0

下面的代码适用于我正在做的事情,但是我很好奇我对 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;
            }
4

1 回答 1

0

Since you're on the sending side, it's fine.

The other option is to use Rx, which has a higher learning curve.

于 2012-07-20T10:55:40.153 回答