如何在vb.net中进行小延迟?

如何在vb.net中进行小延迟?,vb.net,winforms,delay,Vb.net,Winforms,Delay,我想创建一个小的延迟,以便我的第一组代码顺利运行 如何在vb.net中实现这一点 编辑1 假设我有几行这样的代码 ..................Statement Line 1.............. ..................Statement Line 2.............. ..................Statement Line 3.............. ..................Statement Line 1............

我想创建一个小的延迟,以便我的第一组代码顺利运行

如何在vb.net中实现这一点

编辑1

假设我有几行这样的代码

..................Statement Line 1..............
..................Statement Line 2..............
..................Statement Line 3..............
..................Statement Line 1..............
..................Statement Line 5..............

WAIT UNTIL STATEMENT 5 IS COMPLETED

..................Statement Line 6..............
..................Statement Line 7..............
..................Statement Line 8..............
..................Statement Line 9..............
..................Statement Line 10.............

只有在前五条语句的执行完成后,才能执行下五条语句

您想让线程睡眠吗

睡眠(100)

其中100是希望线程睡眠的毫秒数

还要确保导入System.Threading,如果您已经有多个线程,我假设您已经导入了System.Threading


编辑:好的,您添加了一些代码。不过,这应该归结到是否有多个线程在运行,从您的问题来看,它看起来像是在一个线程中运行。在这种情况下,语句5总是在语句6运行之前先完成。这就是代码的工作原理。如果语句1-5中的一个在新线程上生成了某些内容,则唯一不会出现这种情况。

首先-给定您提供的代码示例,第6行在第5行完成之前不会执行。你不需要做任何事;除非第5行正在启动外部应用程序或创建新线程

除此之外—

Thread.Sleep
会引入延迟,但通常情况下,这并不是您想要的

如果您使用Thread.Sleep,执行线程将睡眠多长时间。但是您的示例代码表明您希望线程等待直到满足某些条件。假设您正在等待一个发生在您正在睡眠的线程之外的条件,充其量只能得到一个保持睡眠X毫秒的循环,然后检查该条件

还有其他更容易(从长远来看)/更稳健的方法。如果你真的想在另一个线程上发生一些事情,并在它完成时得到提醒;考虑后台工作人员类。

它对于简单的多线程任务非常方便。您创建了一个BackgroundWorker,并使用新线程上发生的逻辑处理它的“DoWork”事件,并处理“Completed”事件(检查文档中的正确名称,我将从内存中查找)。调用“RunWorkerAsynch”启动进程,当“Worker_Completed”事件触发时,可以继续执行第6行

我希望这有意义/有帮助。

我认为

Application.DoEvents()

应该这样做。

使用BackgroundWorker对象属性“IsBusy”,并且在工作进程繁忙之前不允许执行第6行


阅读更多有关BackgroundWorker的信息

您能澄清一下吗?您希望在何处延迟执行,以及何时延迟执行?你的“第一套代码”是什么?你为什么要这么做语句5是什么类型的语句?在其他线程中运行?它提供了一种设置回调的方法?第5行发生了什么?通常情况下,在第5行执行的代码应该告诉您结束了,然后继续第6行。你怎么能保证第5行会在X秒内结束?@Ranhiru Cooray这正是我要问的成本,而不是导入,我建议只键入Threading.Thread.Sleep(100)@Gent Yea,在这种情况下可能会更好。无论如何,我通常用几个线程进行编码,所以我习惯了已经导入的线程。请参阅我对Ranhiru的评论Cooray@Failed_Noob就像我说的,代码按照发生的顺序执行。在语句1完成之前,语句2不会发生。在语句2完成之前,语句3不会执行,等等。唯一的例外是,如果您的某个语句在新线程上生成了某些事件。是这样吗?我看到你用这个问题标记了Winforms。您是否正在进行一些将在新线程上进行的windows调用?我想如果你不能回答这个问题,你可能需要发布更多的代码。我知道后台程序,但我希望它尽可能简单。请不要在没有认真考虑的情况下这样做。Application.DoEvents()将允许运行UI代码,其中可能包括一个单击事件,该事件会触发与您正在运行的代码完全相同的代码。