- ベストアンサー
VB.NETでタイマー作成
タイトルのとおり、VB.NETで、指定した時間(分単位)を過ぎたときにアラームをならし、メッセージを出すというアプリを作成しています。 はじめは「Sleep」を使っていたのですが、スリープしている間は操作が利かなくなってしまうため、「Timer」コントロールを使って、数えたいと思っています。 どのようなコードが考えられるでしょうか?教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
そのタイマーはどの程度の精度を求められるのでしょうか? タイマーコントロールはあまり精度がよくないので(他の負荷によってイベントが起きる時間が変わる事がある)、正確なタイマーを求めたいならあまり向きません。だいたいでよければタイマーコントロールでインターバルを指定すればいいかと思われます。 とはいっても、.NETはさわった事がないのですが、 VB 6でしたら、このようなコードが有用です。 dim i as double dim j as long j = (指定した分) * 60 '[秒] i = Timer + j '[秒] do i > Timer doEvents loop Beep MsgBox "メッセージ" Timer関数は0時からの経過時間を秒単位での値を返すステートメントです。実際には倍密度で、コンマ二桁までの値(10ミリ秒単位)を取得できます。 i の値に現在から秒単位で時間をプラスして、その時間が過ぎるまで Do While で回す。 doEventsコマンドは他の処理にCPU処理をあけ渡すコマンドです(これをいれないとSleepと一緒で結局固まります)。 Do Whileを使わずタイマーコントロールを使うなら、50ミリ秒単位くらいでインターバルを指定して、グローバル変数にいれておいた値と比べて……とかすればいいと思います。 以上です。
その他の回答 (1)
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
Timerコントロールのintervalを指定し、タイムアウト・イベントに反応してメッセージを表示するだけです。
お礼
さっそくありがとうございました。 ただ、具体的にどうやればいいのかがわかりません。 もうちょっと考えて見ます。
お礼
ありがとうございました。 .NETなので、アドバイスいただいたロジックを.NET用に変えていたのですが、Timer関数はそのままつかえないらしく、いろいろ試したもののだめでした。 まだ工夫が必要なようです。 でもだいぶ参考になりました。ほんとに感謝です☆