1

何かを作りたいという意味です: たとえば、明日の午前 6 時 (時計ベースのイベント)

今のところ、私が目にする唯一のバリアントは、TimpeStampfromで新しいタイマーを開始することですFutureTime - Now

しかし、このソリューションは醜く見えます。特に、多くのイベントがある場合、多くのタイマーを使用するか、何らかの方法でタイマーを最初にイベントに近づけてから、次のイベントを待機する時間を再計算する必要があります。そして、新しいイベントをイベント コレクションにプッシュするたびに再計算します。

私の解決策に比べてもっと正気なものがあるかどうか尋ねているだけですか?または、無料で使用できるライブラリがすでにある場合。

4

2 に答える 2

1

これには Windows タスク スケジューラを使用することをお勧めします。

詳細については、こちらを参照してください:スケジュールされたタスクの作成

于 2013-10-30T09:55:51.237 に答える
1

x 秒ごとに実行する 1 つのタイマーを作成し、イベントの配列を反復処理して、実行する必要があるかどうかを確認できます。

イベントを実行する必要がある場合は、別のスレッドで実行して、タイマー スレッドを中断しないようにします。

イベントクラス

class Event
{
    DateTime TargetDate;
    bool Completed = false;
    IExecuter Executer;
}

IExecuterインターフェース_

interface IExecuter
{
    void Execute();
}

IExecuter実装例

class LogEvent : IExecuter
{
    void Execute(){
         // Log event details to DB or Console or whatever
    }
}

サンプルタイマーループ

foreach (Event e in eventArr)
{
    if(e.TargetDate == DateTime.Now && !e.Completed)
        e.Executer.Execute();
}
于 2013-10-30T10:00:32.043 に答える