2012-07-20 90 views
0

下面的代碼適用於我正在做的事情,但是我很好奇如果我使用Task.Delay()不是最佳實踐。我需要延遲以確保GameHandler有足夠的時間來處理我的按鍵。但是,我想知道是否有更好的方法來做這樣的事情。正確使用Task.Delay延遲按鍵

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; 
      } 

回答

0

既然你在發送方,那很好。

另一種選擇是使用Rx,它具有較高的學習曲線。