2016-08-25 88 views
1

我需要暫停循環中迭代(while語句中的一系列長命令期間的任何點)。雖然我知道如何在迭代結束時使用事件句柄來暫停,但我不確定如何在命令序列中獲得類似的效果。如何暫停循環中迭代

爲了清楚的一個例子:

Thread 1 : 

    while (true) 
    { 
    // commands 
    } 

    Thread 2 : 

    Console.ReadLine(); 

//if 1 is pressed the first thread (Thread 1) must immediately pause. 

任何幫助,將不勝感激。 P.S我是一個初學者,所以詳細的解釋將是非常寶貴的。

+0

解釋你的問題 – Vikrant

回答

3

我不確定如何在命令序列中獲得類似的效果。

簡單地說:你不應該。除非你知道任何代碼在做什麼,否則你不應該試圖打斷它。當然,如果代碼選擇來調用相同的「雖然我理解如何使用事件句柄在迭代結束時暫停」邏輯在流程中,那麼很好 - 但這是針對的運行代碼來決定,而不是控制代碼。暫停任意代碼是破解事物的好方法,這也是爲什麼Thread.Suspend has been deprecated

是完全合法:

while (true) 
{ 
    ElectivePauseIfNeeded(); 
    // ... some commands 
    ElectivePauseIfNeeded(); 
    // ... some more commands 
} 

的這裏一點是,它是決定何時可以安全暫停,而不是外部的代碼迴路。