アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (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ミリ秒単位くらいでインターバルを指定して、グローバル変数にいれておいた値と比べて……とかすればいいと思います。

以上です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/11/16 17:13

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

    • good
    • 0
この回答へのお礼

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

お礼日時:2004/11/16 17:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!