正確な時間にメソッドをコールバックするメソッドを実装したいと思います。我々は、同時に呼び出すことができる方法以上のものを持つことができます。時間付きコールバック
public void CallmeBack(DateTime time, Action callback)
{
}
C#での最適な実装は何ですか?
速くて汚い解決策は、辞書Dictionary<DateTime, List<Action>>
を作成し、毎分(分/秒)ごとにタイマーを作成し、テストモードで時間(DateTime.Now
)と現在の時刻を確認することでした。
解決方法は、現在のマシン時間が変更された場合は「安全」である必要があります。そのため、このような単純な解決策は動作しませんでした:
Timer timer = new Timer((param) => {callback.Invoke();}, null,
(long)(time - DateTime.Now).TotalMilliseconds, Timeout.Infinite);
編集を:シンプルなタイマーが動作しない 典型的なケースは、DSTと手動時間/日付の調整です。 さらに、コールバックを複数回ではなく1回だけ実行したいだけです。
私はそれが遅いと知っていますが、これを解決しましたか?どのくらい正確にこれが必要なのですか? –