我有这段代码
Dim _timer As System.Threading.Timer
Public Sub RunTimer2()
_timer = New System.Threading.Timer(onSave(),
Nothing,
TimeSpan.FromSeconds(5),
TimeSpan.FromSeconds(5))
End Sub
我收到错误重载解析失败,因为没有可访问的'New'接受此数量的参数。表示我尝试创建计时器的行。虽然我可以在msdn和库中的文档中看到它具有我使用的4种可能的类型参数。 我不明白......
答案 0 :(得分:5)
您没有将委托传递给onSave
函数。您正在调用onSave
函数并将其返回值传递给Timer
构造函数。您需要创建该函数的委托并传递它,如下所示:
Dim _timer As System.Threading.Timer
Public Sub RunTimer2()
_timer = New System.Threading.Timer(New TimerCallback(AddressOf onSave),
Nothing,
TimeSpan.FromSeconds(5),
TimeSpan.FromSeconds(5))
End Sub
或者,如果你这样做,VB会自动为你找出代表类型:
Dim _timer As System.Threading.Timer
Public Sub RunTimer2()
_timer = New System.Threading.Timer(AddressOf onSave,
Nothing,
TimeSpan.FromSeconds(5),
TimeSpan.FromSeconds(5))
End Sub
答案 1 :(得分:1)
要在vb.net中声明计时器,您可以:
Private MyTimer As System.Threading.Timer
MyTimer = New System.Threading.Timer(AddressOf MyTimer_Tick, Nothing, RunEveryNMinutes * 60000, RunEveryNMinutes * 60000)
Private Sub MyTimer_Tick(ByVal state As Object)
WriteEventLog("Timertick")
End Sub
答案 2 :(得分:1)
5秒后启动计时器并每隔5秒调用一次
Private timer As System.Threading.Timer = New System.Threading.Timer(AddressOf DoWhatever, Nothing, New TimeSpan(0, 0, 5, 0), New TimeSpan(0, 0, 5, 0))
Private Sub dowhatever(sender As Object, e As Timers.ElapsedEventArgs)
' Do stuff
End Sub