6

これはかなり単純な問題ですが、答えを見つけようとするたびに、Windows のスケジュールされたタスクに関する情報が表示され続けますが、これは実際のものではありません。

私のプログラムは基本的にこれだとしましょう:

void StartDoingThings()
{
   //At Specific System.DateTime
   DoSomething()

   //At another specific System.Datetime
   DoSomethingElse()
}

これらのメソッドを別々の日時に実行するには、これらのコメントの代わりに何を入れればよいでしょうか。

Thread.Sleep() または System.Threading.Timers を使用して、(DateTimeOfEvent - DateTime.Now) に基づいて間隔を計算することもできますが、何か言いたいことがあります (プログラムがまだ実行されていると仮定して): 9:30: 2012 年 11 月 30 日の午前 0 時、メソッド DoAnotherThing() を実行しますか?

4

1 に答える 1

4

メソッドが所定の時間に何かを実行するように「スケジュール」したい場合、それを行う方法はいくつかあります。Thread.Sleep()何もしないスレッドを拘束するため、私は使用しません。これはリソースの無駄です。

一般的な方法は、定期的なスケジュール (たとえば 1 分に 1 回) でウェイクアップするポーリング方法を使用し、実行するタスクの共有リストを確認することです。 System.Timerポーリング方法に使用できます。

aTimer = new System.Timers.Timer(10000);
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);

OnTimedEvent メソッドには、実行する「タスク」のコレクションを保持するコードを含めることができます。タスクの時間になると、Timer の次の実行によってタスクが実行されます。

于 2012-11-29T20:15:19.000 に答える