2

私はこのコードの塊を持っています

Dim _timer As System.Threading.Timer

Public Sub RunTimer2()
    _timer = New System.Threading.Timer(onSave(), 
                         Nothing, 
                         TimeSpan.FromSeconds(5),     
                         TimeSpan.FromSeconds(5))
End Sub

アクセス可能な「新規」がこの数の引数を受け入れないため、過負荷の解決に失敗しましたというエラーが表示されます。タイマーを作成しようとしている行。msdn のドキュメントとライブラリには、私が使用する 4 つの可能な型パラメーターがあることがわかります。理解できません...

4

3 に答える 3

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
于 2013-08-15T12:37:50.203 に答える
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
于 2013-08-15T12:36:18.383 に答える