投稿日 | : 2007/01/09(Tue) 13:43 |
投稿者 | : GOD |
Eメール | : |
URL | : |
タイトル | : Re^5: タイマーイベント中に処理が止まる |
> > そもそも、タイマーイベントを止めないようにしたいのか?
> > 同時に並行処理をしたいのかどちらなのでしょうか?
> > (過去の掲示板での話は、前記での場合での前提の話かと思うので)
> >
> > VB6.0 では、マルチスレッド(詳しくは検索して調べて下さい)は無理なようなので...。
> > 本格的な並行処理をしたいなら、VB.NET 系に移行して下さい。
>
> 起動から終了までタイマーイベントを発生させ続けたいので、並行処理が望ましいです。
> VB6.0での並行処理を諦めて実行ファイルを2個にして対応したいと思います。
> ありがとうございました。
>
解決しているけど他の方法としてフラグで処理分割してもよさそう。
(DoEventsを使用せずにこまめにタイマー割込みを終了させる。)
DoEventsしたいところで必要情報を外部変数に格納して一度タイマーを抜ける。次回タイマー発生時に続きから処理する。
Intervalは適当に。
'FormB
Private flg As Long
Private Sub Form_Load()
flg = 0
Timer1.Interval = 1000
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
Select Case flg
Case 0
'処理 A
Case 1
'処理 B
Case 2
'処理 C
End Select
flg = (flg + 1) Mod 3
End Sub
'ループさせているのなら↓見たいになるかな。
Private Sub Timer2_Timer()
Dim i As Long
' For i = 0 To 10000000
' '処理
' If (i Mod 10000) = 0 Then
' FormA.Label1 = i
' DoEvents
' End If
' Next
For i = flg To flg + 9999
'処理
Next
flg = i
FormA.Label1 = flg
flg = flg Mod 10000000
End Sub