いつもお世話になっております。Haruです。
VB6.0/WinXPにて開発中です。
Sub Form_Load
Timer1.Interval = 100000
Timer1.Enbled = True
End Sub
としといて、
Sub Timer1_Timer
Timer1.Enbled = False
:
処理
:
Timer1.Enbled = True
End Sub
とタイマーを使用します。
そのプログラムを何日間かずっっっと動作させてると、
VB5ではInterval値がクリアされてしまう事(1週間ぐらいかな?)が
あったと思うのですが、
VB6ってどうなのでしょう・・・
ご存知のかたいらっしゃいませんか?
よろしくお願いいたします。
>Timer1.Interval = 100000
10,000 ミリ秒は 10 秒に相当し、最長の設定である 65,535 ミリ秒は 1 分間よりも少し長い時間間隔になります。
ってヘルプに書いてありましたので、この値は設定できてないってことじゃないですか?
>VB5ではInterval値がクリアされてしまう事
いくつになるのですか?0?
すみません。説明が足りなかったようです。
Timarで設定できる限界ではなく、
Intervalに設定する値はこの際何でもよいです。
(10でも、20000でも、)
TimerイベントはIntervalに設定した時間間隔で
イベントが発生しますが、
Exeを1週間とか2週間とかずっっっっと立ち上げっぱなしに
しておくと、VB5ではIntevalがクリアされて(?表現が正しいか自信ありませんが)
イベントが発生しなくなることがある。
といので、そのVBの仕様(?バグ?)はVB6でも生きているのかと思いまして。。。
> VB5ではInterval値がクリアされてしまう事(1週間ぐらいかな?)
>
↑ってOSの連続稼動日数が一定期間を過ぎた時のことじゃないのかな?
(WM_TIMERが発生しないとか。)
誤爆の予感。
もしかしてこれの事?
多分TimerコントロールのTimerイベントも発生しなくなるはずです。
ありがとうございます。
VB5のやつはWN_Timerのまさにそれのようです。
VB5で・・・と聞いていたので
WebでもHITしなかったんですね。
解決です。ありがとうございました。
補足しておくとWin2000以下のOSは修正パッチを当ててないと49.7日で同現象が出ていたはずです。
49.7日は厳密には別のバグですね。Windowsでは95系で発生します。
起動からの経過時間(ミリ秒単位)を32bit符号無し整数に格納して扱う処理での
オーバーフローが原因です。
&HFFFFFFFF / 1000 / 60 / 60 / 24 ≒ 49.71
検索してみるといろいろなソフトにこのバグがあるようです。
ツイート | ![]() |