Timerイベント処理について
- 題名: Timerイベント処理について
- 著者: はるか
- 日時: 2003/09/12 13:45:39
- ID: 646
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: Timerイベント処理について
- 著者: tina
- 日時: 2003/09/12 14:38:53
- ID: 647
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: Timerイベント処理について
- 著者: tina
- 日時: 2003/09/12 14:44:32
- ID: 648
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: Timerイベント処理について
- 著者: はるか
- 日時: 2003/09/12 16:49:13
- ID: 650
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: Timerイベント処理について
- 著者: KOMA
- 日時: 2003/09/12 18:41:50
- ID: 652
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[4]: Timerイベント処理について
- 著者: YK
- 日時: 2003/09/12 18:42:47
- ID: 653
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[4]: Timerイベント処理について
- 著者: はるか
- 日時: 2003/09/12 21:07:54
- ID: 654
- この記事の返信元:
- この記事への返信:
- ツリーを表示
2003/09/12(Fri) 13:46:25 編集(投稿者)
2003/09/12(Fri) 13:46:19 編集(投稿者)
いつもお世話になっております。
コーディングをしているうちにまた問題にぶち当たってしまい、何とか自分で解決
しようと試みたのですが結局解決できず、再度質問させてください。
現在は、Timerを使用して1秒間(Interval=1000)の周期であるファイルの中にある
値を参照し、前回に参照した時と別の値だった場合はフォーム上のコマンドボタンを
活性(Enabled=True)/非活性(Enabled=False)にするようなコードにしてます。
TimerのEnabledは常にTrueです。
コード例:
Private Sub Timer1_tick(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Timer1.Tick
Dim file_path As String '開きたいファイルのパス
Dim fnum As Integer 'ファイル番号
Dim file_status As String '開いたファイル内にある取得した値
Dim before_status As String '前回取得した時の値
file_path = "C:\temp\temp.txt"
System.Windows.Forms.Application.DoEvents()
On Error Resume Next
If FileLen(file_path) = 0 Then 'ファイルが存在しない場合
Exit Sub '終了
Else
'ファイルを開き、値を取得
fnum = FreeFile()
FileOpen(fnum, file_path, OpenMode.Input, OpenAccess.Read)
file_status = LineInput(fnum)
FileClose(fnum)
'前回と同じ値ならリトライ
If before_status = file_status Then
Exit Sub
End If
'前回取得した値を更新
before_status = file_status
'取得した値が"2"の場合はコマンドボタンを活性させる
If file_status = "2" Then
Command1.Enabled = True
Else
Command1.Enabled = False
End If
End If
End Sub
上記のコードを作成し、実行するとCommand1.Enabled = Trueの処理を行っているにも
かかわらずCommand1は非活性だったりします。デバッグモードで1ステップずつ確認し、
ウォッチ画面でCommand1.Enabledを設定して確認もし、Trueと表示をされているのに
非活性のままなのです。
しかし、これが毎回そういう現象になるのではなく、何かのきっかけがあるのでは
ないかと思うのですがそれを見つけることができません。他にもTimer2を作成し、
Timer2のIntervalも1000にしてタイマー処理を行っているのもあるのですが、Timer2は
Command1に対しては何も処理は行っておりません。Timer同士のIntervalが同じだと
何かの影響が出てくるとかそういう話なのでしょうか?
実際にそのコード行を処理して、ウォッチ画面でTrueになっているのも確認でき、
その後開始ボタンを押して全処理を実行させた後もTrueのままだということを確認できる
のにフォーム上では反映されないという現象は起こるのでしょうか?
環境
OS:Win2000 Pro SP4
VS:VS.NET 2003