• ベストアンサー

VB6でスケジュールを組みたいのですが

一定の時刻に一定の操作をさせるプログラムを作りました。一応動くようですが不安です。邪道でしょうか。VB6、OSはXPです。 無限ループ: While Time <> "12:30:00" And Time <> "15:30:00" DoEvents Wend If Time = "12:30:00" Then 仕事A ElseIf Time = "15:30:00" Then 仕事B End If GoTo 無限ループ:

質問者が選んだベストアンサー

  • ベストアンサー
noname#58606
noname#58606
回答No.3

Delphiしか経験がないのですが、CPUの負荷率ってどうなってます? あとは、終了させる時とか、一度無限ループをオフにしないと、素直に終了できないような。 CPUの負荷が高いと、同じソフト内の処理も、もたつきますから。 あまり格好いい処理とは言えないと思います。 今簡単に1秒でどれだけループするか、カウントしてみたら、へっぽこノートでさえ、1秒に1800回ループしてました。 アイディアは、斬新なんですけどねー。 もし、無限ループで突き進むのなら、せめて、スレッド化しないと、作り込めば作り込むほど、不確定要素のあるソフトになっちゃいますよ。 ここはセオリー通りに、Timerで1秒ごとにチェックを入れて、時間を確認。 予定の時間だったら、起動した方が、簡単で楽で、楽しいですよ。 プログラムを作る時は、負荷(CPU、メモリ)は小さく、より簡単に、より楽に、出来るように、がポイントです。w 一応、VBでタイマーで調べてみたら、Delphiと同じ Timer.Interval = 1000 '** 1000 ミリセカンド、つまり、1 秒 なので、理論上1ミリセカンドまでOKなので。 (ミリセカンドになると、精度が怪しくなってくると聞きますが。

noname#62128
質問者

お礼

>ここはセオリー通りに、Timerで1秒ごとにチェックを入れて、時間を確認。 難しく考えていました。これでいきます。ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • nda23
  • ベストアンサー率54% (777/1416)
回答No.2

Timerを使い、Timerイベントで処理するようにします。 VBに限らず、Windowsではイベントドリブンなプログラムを心がけるべきです。 また、DoEventsを使わなければならないような処理も極力避けるべきです。 尚、Time = "12:30:00"というのは正しく記述すると、 Format(Time, "HH:NN:SS") = "12:30:00"です。

noname#62128
質問者

お礼

>Format(Time, "HH:NN:SS") = "12:30:00" はい。使わせていただきます。 Timerを使うとうのは、やはり間隔を縮めていくということでしょうか。 DoEventsはやはり重くなるんですね。 ありがとうございました。

すると、全ての回答が全文表示されます。
noname#60992
noname#60992
回答No.1

素人目に見てもCPU使用率を上げるにはもってこいの方法ですね。 秒単位での起動が必要でないなら、タイマーコントロールで 一分間隔で時間を調べ起動させるとCPUはかなり休めるかな。 秒単位での起動が必要なら、時間が近くなったら、徐々にタイマーの 間隔を縮めていき、数秒前にこのようなループに入れてやるとかの 配慮が必要と思います。

noname#62128
質問者

お礼

秒単位で必要なんです。 Timerにこんな機能がついていれば問題ないのですが。 徐々につめるプログラムも検討したいと思います。 ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A