繁体   English   中英

没有可访问的'New'接受这个数量的参数 - 错误

[英]No accessible 'New' accepts this number of arguments - Error

我有这段代码

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种可能的类型参数。 我不明白......

您没有将委托传递给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

要在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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM