我只是想創建一個簡單的暫停按鈕,並且如果有必要可能需要另一個按鈕。我一直在四處看,我主要看到Thread.Sleep(),這對我不起作用,因爲我想讓暫停保持暫停,直到用戶需要。遊戲c的暫停按鈕#
Thread.Suspend()不起作用,因爲它現在已經過時。
我也看到了創建第二個表單的另一個解決方案,但是,這似乎並沒有爲我工作。一旦第二張表格打開,整個程序就會關閉。
我不確定這是否有所作爲,但我的程序當前使用兩個線程(主線程運行form1與另一個線程)。理想情況下,一切都需要暫停。
我只是想創建一個簡單的暫停按鈕,並且如果有必要可能需要另一個按鈕。我一直在四處看,我主要看到Thread.Sleep(),這對我不起作用,因爲我想讓暫停保持暫停,直到用戶需要。遊戲c的暫停按鈕#
Thread.Suspend()不起作用,因爲它現在已經過時。
我也看到了創建第二個表單的另一個解決方案,但是,這似乎並沒有爲我工作。一旦第二張表格打開,整個程序就會關閉。
我不確定這是否有所作爲,但我的程序當前使用兩個線程(主線程運行form1與另一個線程)。理想情況下,一切都需要暫停。
最簡單的事情是有一些其他線程可以訪問的變量/屬性。
Bool ShouldPause = false;
另一個線程應該有它的遊戲循環類似的東西:
while(true)
{
if(!ShouldPause)
{
UpdateGame();
}
Draw();
}
然後當ShouldPause變量是假的遊戲才能繼續進行。 我做了幾次,它完美的工作。
你不想通過一些「暫停」類似的函數暫停線程,因爲它會阻止他在屏幕上繪製並且看起來沒有響應。
您可以使用線程信號技術。 一個好的開始是看看ManualResetEvent Class
只是好奇......你的「另一個線程」是做什麼的?它可能運行一種 'while while(true){// do something}'--loop? – 2013-04-05 22:09:55
是的,我的其他線程正在運行一段時間(true)循環。 – krikara 2013-04-05 22:12:48
你爲什麼不把它改成'while(!paused)'? – 2013-04-05 22:18:34