• ベストアンサー

VB.NETでタイマー作成

タイトルのとおり、VB.NETで、指定した時間(分単位)を過ぎたときにアラームをならし、メッセージを出すというアプリを作成しています。 はじめは「Sleep」を使っていたのですが、スリープしている間は操作が利かなくなってしまうため、「Timer」コントロールを使って、数えたいと思っています。 どのようなコードが考えられるでしょうか?教えてください。

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

  • ベストアンサー
  • takasebou
  • ベストアンサー率42% (61/144)
回答No.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ミリ秒単位くらいでインターバルを指定して、グローバル変数にいれておいた値と比べて……とかすればいいと思います。 以上です。

YSK-Dream
質問者

お礼

ありがとうございました。 .NETなので、アドバイスいただいたロジックを.NET用に変えていたのですが、Timer関数はそのままつかえないらしく、いろいろ試したもののだめでした。 まだ工夫が必要なようです。 でもだいぶ参考になりました。ほんとに感謝です☆

その他の回答 (1)

回答No.1

Timerコントロールのintervalを指定し、タイムアウト・イベントに反応してメッセージを表示するだけです。

YSK-Dream
質問者

お礼

さっそくありがとうございました。 ただ、具体的にどうやればいいのかがわかりません。 もうちょっと考えて見ます。