【问题标题】:Timer not starting in vb.net计时器未在 vb.net 中启动
【发布时间】:2013-09-04 02:38:03
【问题描述】:

使用 excel 作为数据源的网络程序。然后我用这个数据源填充一个datagridview,并通过datagridview 对数据集进行更改。我试图找到一种方法来通过一个按钮来刷新这个数据集,该按钮将在更改后更新值。我唯一的问题是我试图在我的刷新方法中设置一个计时器,但它从不初始化/启动。我不知道为什么,从我在网上找到的在 vb.net 中启动计时器的方法是将计时器变量设置为启用 = true。我已经进入我的调试器,发现计时器永远不会启动。下面是我的代码,如果有人能弄清楚为什么这个计时器没有启动,我将非常感谢你的帮助!

Dim mytimer As New System.Timers.Timer
Sub refresh()

   write2Size()



   mytimer.timer = New System.Timers.Timer(20000)
  'Starting Timer
   mytimer.Enabled = True
   Cursor.Current = Cursors.WaitCursor



   AddHandler mytimer.Elapsed, AddressOf OnTimedEvent



   objworkbook.Save()
   objExcel.ActiveWorkbook.Save()

   myDS.Clear()
   retrieveUpdate()

  'Setting the cursor back to normal here
       Cursor.Current = Cursors.Default
   End Sub

   Private Shared Sub OnTimedEvent(source As Object, e As ElapsedEventArgs)

   Console.WriteLine("The Elapsed event was raised at {0}, e.SignalTime)
   End Sub

【问题讨论】:

  • 在启用定时器的位置和禁用定时器的位置之间是否有省略代码?如果有省略的代码,请用注释说明它在哪里,以及它的作用。此外,在 Timer 第一次触发之前需要 20 秒。你等了那么久吗?

标签: vb.net timer refresh


【解决方案1】:

您正在这里创建一个计时器 将 mytimer 调暗为新 System.Timers.Timer 但您只需将处理程序分配给您在 Refresh 例程中创建的处理程序。

本应期待

Dim mytimer As New System.Timers.Timer(20000)
AddHandler mytimer.Elapsed, AddressOf OnTimedEvent

然后

Private Shared Sub OnTimedEvent(source As Object, e As ElapsedEventArgs)

   Console.WriteLine("The Elapsed event was raised at {0}, e.SignalTime)
   Refresh()
End Sub

类似的东西

Sub refresh()

   myTimer.Enabled = False
   // refresh the doings
   myTimer.Enabled = True
End sub

请原谅我缺乏 VBness,我是 C# 男孩。

【讨论】:

  • 如果从方法中取出 AddHandler 会出现语法错误
  • 然后放入其他方法,formcreate 或 show 或其他任何方法。重点是您需要一些代码来首次设置计时器的 OnTimedEvent 处理程序。
猜你喜欢
  • 2018-09-26
  • 2022-01-27
  • 2014-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-06
  • 2020-12-30
  • 1970-01-01
相关资源
最近更新 更多