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

Sys*_*ect 2 vb.net visual-studio-2010

我有这段代码

Dim _timer As System.Threading.Timer

Public Sub RunTimer2()
    _timer = New System.Threading.Timer(onSave(), 
                         Nothing, 
                         TimeSpan.FromSeconds(5),     
                         TimeSpan.FromSeconds(5))
End Sub
Run Code Online (Sandbox Code Playgroud)

我得到错误重载解析失败,因为没有可访问的'新'接受这个数量的参数.对于我试图创建计时器的行.虽然我可以在msdn和库中的文档中看到它具有我使用的4种可能的类型参数.我不明白......

Ste*_*art 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
Run Code Online (Sandbox Code Playgroud)

或者,如果您这样做,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
Run Code Online (Sandbox Code Playgroud)