Timerの連続動作について

解決


Haru  2005-06-24 20:29:55  No: 123014

いつもお世話になっております。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ってどうなのでしょう・・・
ご存知のかたいらっしゃいませんか?
よろしくお願いいたします。


あ〜  2005-06-24 20:42:17  No: 123015

>Timer1.Interval  =  100000

10,000 ミリ秒は 10 秒に相当し、最長の設定である 65,535 ミリ秒は 1 分間よりも少し長い時間間隔になります。

ってヘルプに書いてありましたので、この値は設定できてないってことじゃないですか?

>VB5ではInterval値がクリアされてしまう事
いくつになるのですか?0?


Haru  2005-06-24 20:53:55  No: 123016

すみません。説明が足りなかったようです。

Timarで設定できる限界ではなく、
Intervalに設定する値はこの際何でもよいです。
(10でも、20000でも、)

TimerイベントはIntervalに設定した時間間隔で
イベントが発生しますが、
Exeを1週間とか2週間とかずっっっっと立ち上げっぱなしに
しておくと、VB5ではIntevalがクリアされて(?表現が正しいか自信ありませんが)
イベントが発生しなくなることがある。

といので、そのVBの仕様(?バグ?)はVB6でも生きているのかと思いまして。。。


GOD  2005-06-24 20:55:39  No: 123017

> VB5ではInterval値がクリアされてしまう事(1週間ぐらいかな?)
>
↑ってOSの連続稼動日数が一定期間を過ぎた時のことじゃないのかな?
(WM_TIMERが発生しないとか。)

誤爆の予感。


ひろ  2005-06-24 21:07:05  No: 123018

もしかしてこれの事?

http://www.google.co.jp/search?biw=817&hl=ja&q=497+WM_TIMER&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja

多分TimerコントロールのTimerイベントも発生しなくなるはずです。


Haru  2005-06-24 22:13:44  No: 123019

ありがとうございます。

VB5のやつはWN_Timerのまさにそれのようです。
VB5で・・・と聞いていたので
WebでもHITしなかったんですね。

解決です。ありがとうございました。


GOD  2005-06-24 22:35:57  No: 123020

補足しておくとWin2000以下のOSは修正パッチを当ててないと49.7日で同現象が出ていたはずです。


ひろ  2005-06-25 00:40:53  No: 123021

49.7日は厳密には別のバグですね。Windowsでは95系で発生します。

起動からの経過時間(ミリ秒単位)を32bit符号無し整数に格納して扱う処理での
オーバーフローが原因です。

  &HFFFFFFFF / 1000 / 60 / 60 / 24 ≒ 49.71

検索してみるといろいろなソフトにこのバグがあるようです。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加