--------------------------以下コード---------------------------------------- Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim tm As New Timer tm.Enabled = True tm.Interval = 3000 AddHandler tm.Tick, AddressOf Timer_Tick tm = Nothing End Sub
Private Sub Timer_Tick(ByVal sender As Object, ByVal e As EventArgs) Console.WriteLine("タイマーテスト") End Sub
分類:[.NET]
お世話になります。
初心者の質問で申し訳ないのですが、VB2005のWindowsアプリケーションで以下のようなコードを
実行した場合、タイマーイベントが発生し続けてしまいます。
タイマーのインスタンスは、ロードイベント内でローカル変数として生成している為、
スコープを抜けた段階でガベージコレクトの対象になるので、
Tickイベントは発生しないと思っていたのですが、理由がわかりません。
ちなみにTimer_Tick内で強制的にGC.Collect()を呼び出しても変わりませんでした。(>_<)
どなたかお詳しい方、ご教授よろしくお願いします!
--------------------------以下コード----------------------------------------
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim tm As New Timer
tm.Enabled = True
tm.Interval = 3000
AddHandler tm.Tick, AddressOf Timer_Tick
tm = Nothing
End Sub
Private Sub Timer_Tick(ByVal sender As Object, ByVal e As EventArgs)
Console.WriteLine("タイマーテスト")
End Sub
End Class