tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^2: System.Threading.Timeクラス?
投稿日: 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つなのですが、
この処理の場合「タイマーを止める」って単純に考えてよいのでしょうか?

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。