タイトル | : Re^2: System.Threading.Timeクラス? |
記事No | : 8536 |
投稿日 | : 2009/01/07(Wed) 16:52 |
投稿者 | : ひでと |
> 私だけかも知れませんが、何の為に、何をどのようにしたいのかが、 > 今一理解できませんので、何をどのように答えたらいいのかが解りません。 > (投稿されたコードでは推測もできません) 申し訳ありません。
> > 指定時間毎(1秒)にイベントを発生させたいならリンク先にサンプルがあったかと。 サンプルであったのが以下のようでした
' threadtimer.vb
Imports System Imports System.Threading
Public Class ThreadTimerTest Shared Sub Main() Dim ttt As ThreadTimerTest = New ThreadTimerTest() ttt.Run() End Sub
Public Sub Run() Dim timerDelegate As TimerCallback _ = New TimerCallback(AddressOf MyClock) Dim timer As Timer _ = New Timer(timerDelegate, Nothing, 0, 1000)
Console.ReadLine() ' キーが押されるまで待機 End Sub
Public Sub MyClock(o As Object) Console.WriteLine(DateTime.Now) ' 出力例: ' 2005/11/08 19:59:10 ' 2005/11/08 19:59:11 ' 2005/11/08 19:59:12 ' …… End Sub End Class
' コンパイル方法:vbc threadtimer.vb というものでしたが、Formとどのように関連づけていいのかが、良く分かりませんでした。
> > Public Class Form1 > > Private aTimer As New System.Timers.Timer() > Private Count As Integer > > Private Sub Button1_Click(ByVal sender As System.Object, _ > ByVal e As System.EventArgs) Handles Button1.Click > AddHandler aTimer.Elapsed, AddressOf OnTimedEvent > aTimer.Interval = 1000 > aTimer.Enabled = True > End Sub > > Private Sub OnTimedEvent(ByVal source As Object, _ > ByVal e As System.Timers.ElapsedEventArgs) > Count += 1 > Debug.Print(Count.ToString) > End Sub > > Private Sub Button2_Click(ByVal sender As System.Object, _ > ByVal e As System.EventArgs) Handles Button2.Click > aTimer.Enabled = False > GC.KeepAlive(aTimer) > End Sub > > Private Sub Form1_FormClosed(ByVal sender As Object, _ > ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed > aTimer.Enabled = False > GC.KeepAlive(aTimer) > End Sub > > End Class
いただいた処理でいまひとつ理解できない部分がありますので、もう少しお願いいたします。
1.System.Timers.Timer()とSystem.Threading.Timerは同じものでしょうか? 2.GC.KeepAlive の説明で 「指定したオブジェクトを参照し、現在のルーチンの開始時からこのメソッドが呼び出される時点までの間、そのオブジェクトをガベージ コレクションの対象から外します。」 とありまして、この意味がもう1つなのですが、 この処理の場合「タイマーを止める」って単純に考えてよいのでしょうか?
|