2016-11-18 52 views
0

此代碼是一種算法搜索,目標是當表格從1到16排序時(遊戲中的第一個表格不是有序的)。我想在填充UI表(UI表中顯示遊戲結果的表)時有一個延遲,因爲我想向玩家展示按算法解決遊戲的過程。 我如何在//Make Delay中有延遲(1或2秒)?在C中有時間延遲#

public bool BFS_TreeSearch(int[,] table, Queue<int[,]> fringe) 
    { 
     MakeNode(table, fringe); 

     do 
     { 
      if (fringe.Count == 0) 
       return false; 
      int[,] node = fringe.Dequeue(); 

      //Make Delay 


      FillTableUI(node); 

      if (isGoal(node)) 
       return true; 
      MakeNode(node, fringe); 
     } while (true); 

    } 

回答

1

您可以通過使用Thread.SleepTask.Delay根據您的要求使用同步或異步睡眠。正如你想在UI上展示一些東西,我認爲你應該像這樣使用後者。請注意,這將迫使你使你的方法async,所以你必須以不同的方式調用它。

public async Task<bool> BFS_TreeSearch(int[,] table, Queue<int[,]> fringe) 
{ 
    MakeNode(table, fringe); 

    do 
    { 
     if (fringe.Count == 0) 
      return false; 
     int[,] node = fringe.Dequeue(); 

     await Task.Delay(2000) // continue from here after 2 seconds 


     FillTableUI(node); 

     if (isGoal(node)) 
      return true; 
     MakeNode(node, fringe); 
    } while (true); 

} 

請參閱this post也在本主題中。