如何在vb.net中做一个小延迟?

时间:2011-05-08 17:37:12

标签: vb.net winforms delay

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

我怎么能在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.............

只有当完成前五个语句的执行时才能执行接下来的五个语句

4 个答案:

答案 0 :(得分:4)

首先 - 鉴于您提供的代码示例,第6行将在第5行完成后才会执行。你不需要做任何事情;除非第5行是踢外部应用程序或创建新线程。

除此之外 -

Thread.Sleep会引入延迟,但往往不是你想要的。

如果你使用Thread.Sleep,执行的线程会在你告诉它的时间内休眠。但是您的示例代码表明您希望线程等待 UNTIL 满足某些条件。假设你正在等待在你正在睡觉的线程之外发生的情况,那么你最终会得到一个循环,它会保持睡眠X毫秒,然后检查条件。

还有其他方法比较容易(从长远来看)/更健壮。如果你真的希望在另一个线程上发生某些事情,并通过它完成提醒;考虑BackgroundWorker类。

http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx

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

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

答案 1 :(得分:3)

你想让线程睡觉吗?

Thread.sleep代码(100);

其中100是您希望线程休眠的毫秒数。

还要确保有Imports System.Threading,如果你已经有多个线程,我认为你有。

编辑:好的,所以你添加了一些代码。不过,这应该归结为你是否有多个线程正在运行,并且从你的问题来看,它看起来像是在一个线程中。在这种情况下,语句5将始终在语句6运行之前完成。这就是代码的工作原理。唯一的情况是,如果其中一个语句1-5在新线程上产生某些东西,那就不会这样。

答案 2 :(得分:1)

我认为

Application.DoEvents()

应该这样做。

答案 3 :(得分:0)

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

详细了解BackgroundWorker here