2016-08-25 156 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 
} 

的这里一点是,它是决定何时可以安全暂停,而不是外部的代码回路。