2016-06-11 33 views
0

私は日中、データベースにデータを書き込むコンソールアプリケーションを持っています。私は2回だけ仕事をしたいと思います。現時点では、私はwhileループを使用しており、時間範囲に対して現在の時刻をチェックしています。これは、ジョブを実行したいのですが、これはCPUの電力を少し消費します。これを行うためのきれいな方法がありますか?特定の時刻にジョブを開始/停止する方法

While(true) 
{ 
    if(current > DateTime.Today.AddHours(6) && current < DateTime.Today.AddHours(20)) 
    { 
     ---DO STUFF 
    } 
} 

答えて

1

はい、次のようにSystem.Timers.Timerクラスを使用することを検討してください。ここで、間隔は1000ミリ秒(1秒)に設定されています。 1秒ごとに、あなたが望むタスクを実行できるときにはElapsedイベントが発生します。あなたのコメントパー

Timer tmr = new Timer(1000); 
tmr.Elapsed += elapsedHandler; 

private void elapsedHandler(Object source, ElapsedEventArgs e) 
{ 
    //do your work 
} 

、その場合には、あなたのexeを作成し、そのexeファイルを実行するために、DOSのバッチスクリプトを作成します。次に、Windows task schedulerを使用して、特定の時間帯にdos scriptを実行します。

+0

あまり使用されます。しかし、私は6時と20時の間で日常的に実行する作業を望んでいたならば、私が希望することができます2タイマーあります。 1つはジョブの実行時間、もう1つはジョブが再び実行されるまでの時間です。あれは正しいですか? –

+0

@MitchelStuartFountaine、それが役立つ場合、答えの編集を参照してください。 – Rahul

+0

フィードバックRahulに感謝します。私はWindowsタスクスケジューラを使用して、コンソールアプリケーションを開始/終了していました。それはプロセスを殺すだろうが、私は依存関係のためにそれを開始するのに苦労していた。残念ながら、タスクスケジューラがありません。私はこのサービスを最終的にサービスにしていきますので、上記の時間の間にのみサービスを行うようにしたいと思います。 –

1

あなたは同じアプローチを維持しますが、1ミリ秒または大きなの睡眠を使用し、CPUは

関連する問題