我想创建一个小延迟,以便我的第一组代码顺利运行。
我怎么能在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.............
只有当完成前五个语句的执行时才能执行接下来的五个语句
答案 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