投稿者 るしぇ  () 投稿日時 2008/7/5 02:23:00
ここからは解決にある程度の発想力が必要となります。 
 
さて、Timer1.Interval はデフォルトの 100 (ミリ秒)でしょうか? 
単純計算で1秒間に10回イベントが起こります。条件が合えば10回ファイルへの 
書込み処理が発生します。書込み処理は同じ内容になるでしょうから無駄ですね。 
 
これを避けるには、 
アラームメッセージの一覧を管理し、実行したらフラグを立てる。 
フラグが立っているアラームメッセージは実行しない。(フラグは 
日付が変わった時点でリセットする)としても良いでしょうし、 
それほど細かくアラームメッセージが設定されていないのであれば、 
ファイルの更新日付が1分以内なら実行しない。。。というのでも 
うまくいくでしょう。 
もちろんもっと良いアイデアはいくらでもあるでしょう。 
 
では逆に Timer1.Interval を3分にしたら?。。。秒まで時刻が 
一致するのは稀です。アラームメッセージが全く実行されなくなります。 
 
これを避けるには、 
If 文に不等号を使って範囲指定にします。 
  If genzai.Hour = strTime.Hour AndAlso Math.Abs(genzai.Minute - strTime.Minute) <= 5 Then 
    '時が一致・分が前後5分以内の処理 
  End If 
この考え方は重要です。Timer1.Interval が1秒でアラームメッセージを1秒単位で 
登録した場合、実行されないアラームメッセージが必ず出てきます。条件をゆるくする 
ことが必要な場合の考え方です。 
応用すれば格闘ゲームの当たり判定を甘くして難易度を下げることもできるかも 
しれません。