Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 重新触发VB子例程,如何序列化执行?_.net_Vb.net - Fatal编程技术网

.net 重新触发VB子例程,如何序列化执行?

.net 重新触发VB子例程,如何序列化执行?,.net,vb.net,.net,Vb.net,抱歉,如果这是一个新手问题 我有一个由计时器触发的VB.NET子例程。我发现,有时,如果例程运行很长时间,当它仍在运行时,会再次触发例程并产生不可预测的结果。这正常吗?例程的每个副本都在自己的线程中运行吗?有没有办法序列化例程?现在我使用一个布尔值,我在输入时将其设置为True,在输入时将其设置为False,这样我就可以在输入例程时检查例程是否正在运行,但我认为可能会有更优雅的功能。在开始执行子例程时停止计时器,然后在退出时再次启动它 您可能应该包括错误处理,以便计时器即使在意外退出时也会重新启

抱歉,如果这是一个新手问题


我有一个由计时器触发的VB.NET子例程。我发现,有时,如果例程运行很长时间,当它仍在运行时,会再次触发例程并产生不可预测的结果。这正常吗?例程的每个副本都在自己的线程中运行吗?有没有办法序列化例程?现在我使用一个布尔值,我在输入时将其设置为True,在输入时将其设置为False,这样我就可以在输入例程时检查例程是否正在运行,但我认为可能会有更优雅的功能。

在开始执行子例程时停止计时器,然后在退出时再次启动它


您可能应该包括错误处理,以便计时器即使在意外退出时也会重新启动

开始执行子程序时停止计时器,退出时再次启动


您可能应该包括错误处理,以便计时器即使在意外退出时也会重新启动

A
System.Windows.Forms.Timer
是单线程的,所以我很惊讶
Tick
事件在运行时被调用(根据定义,UI线程应该被占用,并且无法进行调用)

我可以看到
滴答声
事件排队,并按顺序发生


System.Timers.Timer
是多线程的,可能具有您描述的情况。(如果您正在使用其中一个,切换到
System.Windows.Forms.Timer
至少可以防止事件相互中断)

a
System.Windows.Forms.Timer
是单线程的,所以我很惊讶
勾选事件在运行时被调用(根据定义,UI线程应该被占用,并且无法进行调用)

我可以看到
滴答声
事件排队,并按顺序发生


System.Timers.Timer
是多线程的,可能具有您描述的情况。(如果您使用其中一种,切换到
System.Windows.Forms.Timer
至少可以防止事件相互中断)

这是System.Windows.Forms.Timer还是System.Timers.Timer?这是System.Windows.Forms.Timer还是System.Timers.Timer?