仅在VB.Net中的第一个计时器勾号事件上执行命令

仅在VB.Net中的第一个计时器勾号事件上执行命令,vb.net,timer,Vb.net,Timer,我在对象的每个滴答声间隔运行一些代码 有些代码我只想在第一次执行时执行一次。我希望避免使用带有全局计数器的if语句,因为我不想在每次滴答声之后都对该语句进行评估(考虑到我希望尽可能快地运行数十万次滴答声事件,从性能角度看,这似乎相当昂贵) 所以我的问题是,有人知道这样做的诀窍吗?另外,我想在更一般的编程环境中,我有兴趣了解有哪些可能的解决方案/模式可以在循环中只执行一次代码而不使用if语句 编辑:考虑到这一点,是否可能有两个指针用于两个单独的例程,其中一个包含第一次执行的代码,而另一个不包含。在

我在对象的每个滴答声间隔运行一些代码

有些代码我只想在第一次执行时执行一次。我希望避免使用带有全局计数器的if语句,因为我不想在每次滴答声之后都对该语句进行评估(考虑到我希望尽可能快地运行数十万次滴答声事件,从性能角度看,这似乎相当昂贵)

所以我的问题是,有人知道这样做的诀窍吗?另外,我想在更一般的编程环境中,我有兴趣了解有哪些可能的解决方案/模式可以在循环中只执行一次代码而不使用if语句


编辑:考虑到这一点,是否可能有两个指针用于两个单独的例程,其中一个包含第一次执行的代码,而另一个不包含。在第一个例程结束时,指向该例程的指针可以切换到另一个例程?

只需编写另一个子例程即可启动计时器。在本小节中,首先只执行一次要执行的代码,然后启动计时器

Private Sub StartTimer(ByRef tmr as Timer)
  DoStuffOnce()
  tmr.Start()
End Sub
如果这不是你想要的,那么你需要详细说明你的问题


顺便说一句,检查布尔变量大约需要几微秒,我怀疑这是否是代码中决定速率的步骤。

简单的布尔变量做不到的事情。它不贵,只需不到一纳秒。你每秒可以做一万亿次以上。计时器的滴答声不能超过每秒64次。这是相当奇怪的想做这个“第一次”与延迟,而不是只做它立即当你启用计时器顺便说一句。谢谢,@HansPassant。这似乎是普遍的共识。你说的延期是什么意思?我确实想在启用计时器时立即执行此操作,但我想将代码限制为在handler sub上打勾表示“整洁”,当然是错误的“整洁”。仍然没有什么你不能用lamda解决的。