Windows サービスがあり、タイマーを挿入したいと考えています。現在の時刻が であるかどうかを確認するにはどうすればよい9:00 AM
ですか? サービスにこれを毎日チェックしてもらいたいです。本当にありがとうございました
私の試み:
Datetime dt=Datetime.parse("09:00:00 everyday");
if(datetime.now -dt ==0)
{
//fire event
}
それはちょっとばかげていますが。
Windows サービスがあり、タイマーを挿入したいと考えています。現在の時刻が であるかどうかを確認するにはどうすればよい9:00 AM
ですか? サービスにこれを毎日チェックしてもらいたいです。本当にありがとうございました
私の試み:
Datetime dt=Datetime.parse("09:00:00 everyday");
if(datetime.now -dt ==0)
{
//fire event
}
それはちょっとばかげていますが。
タイマーを作成し、その間隔を現在と明日の午前 9:00 の間のタイムスパンに設定する必要があります。次にタイマーが鳴ったら、同じように間隔を設定し直します。この Timer クラスを使用する必要があります: http://msdn.microsoft.com/en-us/library/system.timers.timer.aspx
DateTime.UtcNow.Hour を使用して現在の時間を確認してください
UtcNow を使用すると、協定世界時 (UTC) で表される、コンピューターの現在の日付と時刻に設定された DateTime オブジェクトを取得できます。
var now = DateTime.Now;
var today = now.Date;
var nineAm = today.AddHours(9);
TimeSpan ts = nineAm - now;
var timeInMillisecondsTill9Am = ts.Milliseconds;
If(timeInMillisecondsTill9Am==0)
{
//your code goes here
}
誰かがあなたのコンピューターやサービスをいつシャットダウンまたは再起動するかわからないため、この種の中断を処理するのに十分な堅牢な方法を使用していることを確認する必要があります.
時刻が午前 9 時以降で、最後の実行日が昨日の場合、サービスが 5 分ごとにチェックすることをお勧めします。その場合は、最終実行日を (単純なテキスト ファイルで) その日に更新してから、"9:00am" タスクを実行します。このようにして、タスクは 1 日に 1 回だけ、ほぼ午前 9 時に実行され、再起動に対して堅牢になります。
チェックをトリガーするには、標準の .NET タイマーを使用する必要があります。十分に賢ければ、午前 9 時から数秒後に起動させることができます。
それが良い解決策かどうか教えてください。