正确使用Task.Delay来延迟按键

时间:2012-07-20 03:43:11

标签: c# .net asynchronous delay task

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

1 个答案:

答案 0 :(得分:0)

因为你在发送方面,所以很好。

另一种选择是使用Rx,它具有更高的学习曲线。