如何在C#中暂停循环(while、foreach、for或其他)?
有没有一种方法可以在不阻塞的情况下将循环暂停指定的时间?我不想使用Thread.Sleep(xx)。是否有方法使用手动事件或调度程序计时器暂停循环?我不想使用thread.sleep,因为它会阻塞线程,我不想这样 编辑: 我想做的与这里的帖子类似: 这里没有回答,所以我已经解释了我需要在这里做什么 我无法打开串行端口并使其保持打开状态,每次都必须将其关闭。所以,我要做的是点击循环中的第一项,打开组件,写入它,读取它,然后关闭它。如果你曾经在windows上使用过鼠标或蓝牙扫描仪,你就会知道并不是每个组件都会一直发回消息。因此,如果一个端口没有发送回消息,它就必须超时。如果短时间内没有收到消息,我需要继续 如果第一次没有响应,我可能会用不同的消息再次访问同一端口。当我这样做时,我得到一个错误,即端口已经打开;是的,因为循环只是在代码中穿行,没有足够的停顿 sleep只是阻止线程,以及comport发送回它的消息,我不知道为什么,它只是阻止了。我宁愿不使用thread.sleep 当我循环它时,我希望它暂停,直到我关闭端口,然后从循环中的下一项开始。这是最重要的部分 有没有办法启动循环、在新线程上生成方法、暂停调用它的循环、等待返回消息或时间限制,然后在另一个线程这样说时让循环继续?谢谢 编辑 我用了自动复位器。感谢您的帮助使用。它允许您暂停一个线程,直到另一个线程发出继续执行的信号如何在C#中暂停循环(while、foreach、for或其他)?,c#,loops,C#,Loops,有没有一种方法可以在不阻塞的情况下将循环暂停指定的时间?我不想使用Thread.Sleep(xx)。是否有方法使用手动事件或调度程序计时器暂停循环?我不想使用thread.sleep,因为它会阻塞线程,我不想这样 编辑: 我想做的与这里的帖子类似: 这里没有回答,所以我已经解释了我需要在这里做什么 我无法打开串行端口并使其保持打开状态,每次都必须将其关闭。所以,我要做的是点击循环中的第一项,打开组件,写入它,读取它,然后关闭它。如果你曾经在windows上使用过鼠标或蓝牙扫描仪,你就会知道并不
在提供的链接中,底部有一个示例,其中显示了如果暂停某个内容,该内容将被定义阻止,如何使用该内容。暂停一个线程肯定会将控制权交给其他线程 除非你需要别的东西而不是暂停 什么是暂停给你-也许如果你更新你的问题 我刚想出来-也许你想暂停一下,让UI运行-然后做一些类似的事情(在循环的每个步骤中):
这将使GUI对您做出响应,并使您的循环变慢。您能否发布一个您试图暂停的代码示例,以及关于您为什么要暂停的其他信息(即您试图实现什么)。我不明白您试图做什么……您正在编写什么类型的应用程序?WinForms客户端?WPF?银灯?ASP.NET服务器端代码?windows服务?还有别的吗?您使用的是哪个版本的.NET?Thread.Sleep()不会阻止任何内容。它只是浪费了一根线。可用于少量螺纹(<10)。
int times = 100;
while (times > 0)
{
Application.DoEvents();
Thread.Sleep(10);
times--;
}