如何在迭代过程中暂停循环

本文关键字:暂停 循环 过程中 迭代 | 更新日期: 2023-09-27 18:04:00

我需要在迭代中暂停循环(while语句中长系列命令中的任何点)。虽然我知道如何使用事件句柄在迭代结束时暂停,但我不确定如何在命令序列中实现类似的效果。

一个清晰的例子:

Thread 1 :
    while (true) 
    {
    // commands
    }
    Thread 2 : 
    Console.ReadLine();
//if 1 is pressed the first thread (Thread 1) must immediately pause.

任何帮助都将非常感激。注:我是初学者,所以详细的解释将是无价的。

如何在迭代过程中暂停循环

我不确定如何在命令序列中实现类似的效果。

简单地说:你不应该。除非您知道代码在任何时候都在做什么,否则您不应该尝试中断它。当然,如果代码选择在流中间调用相同的"虽然我理解如何使用事件句柄在迭代结束时暂停"逻辑,那么很好-但这是由运行代码决定的,而不是控制代码。暂停任意代码是破坏东西的好方法,这就是为什么Thread.Suspend被弃用的原因。

但是这个完全有效:

while (true) 
{
    ElectivePauseIfNeeded();
    // ... some commands
    ElectivePauseIfNeeded();
    // ... some more commands
}
这里的要点是,决定何时安全暂停的是循环,而不是外部代码。