データベーステーブルを自動的に更新するタイマーを実装する最良の方法は何ですか?コードサンプルは素晴らしいでしょう!ターゲットメソッドを24時間ごとに呼び出すようにしたい場合は、メソッドが18:30に毎日起動するようにしてください。毎日固定の時間に自動的にデータベーステーブルを更新するタイマーを設定する方法
私はあなたが異なった方法の多くでやりたいが、サードパーティのライブラリを使用すると、ほとんどが最も安全な方法であることができ、C#
データベーステーブルを自動的に更新するタイマーを実装する最良の方法は何ですか?コードサンプルは素晴らしいでしょう!ターゲットメソッドを24時間ごとに呼び出すようにしたい場合は、メソッドが18:30に毎日起動するようにしてください。毎日固定の時間に自動的にデータベーステーブルを更新するタイマーを設定する方法
私はあなたが異なった方法の多くでやりたいが、サードパーティのライブラリを使用すると、ほとんどが最も安全な方法であることができ、C#
で働いています。だから私はあなたをお勧めしますHangfire。
バックグラウンド操作を処理してスケジュールすることができます。あなたの例では、定期的なジョブを使用することができます。
RecurringJob.AddOrUpdate(
() => Console.WriteLine("Recurring!"),
Cron.Daily);
ありがとうございました! –
while(true)
{
if(DateTime.Now.Hour==18 && DateTime.Now.Minute==30)
{ はここにあなたの更新機能を呼び出します。
}
} 時間条件は、それがデータベースを更新します満たされforever.Whenコードのこの部分が実行されます。
これは無効なコードです。 'datetime'は構造体の正しい名前ではなく、' now'も静的フィールドと一致するように大文字ではありません。 '18:30'は文字列ではなく、他の種類の変数型でもありません。 – ColinM
これはひどい考えです。 –
ありがとうございました –
これは簡単なクラスです。
class DailyTaskRunner
{
private DateTime _lastDateRun = DateTime.MinValue;
Timer _timer;
public DailyTaskRunner(TimeSpan timeOfDay, Action task)
{
_timer = new Timer((o) =>
{
if (DateTime.Now.TimeOfDay >= timeOfDay && DateTime.Today != _lastDateRun)
{
_lastDateRun = DateTime.Today;
task();
}
}, null, 1, 1);
}
}
void TestTask()
{
DailyTaskRunner r = new DailyTaskRunner(TimeSpan.FromHours(8) + TimeSpan.FromMinutes(43),() => Console.WriteLine("I'm a daily task, run at " + DateTime.Now.TimeOfDay.ToString()));
Console.ReadLine();
}
これは有効な答えです、なぜそれはdownvotedされましたか? – ColinM
ありがとうございました –
スケジュールされたタスク? – BugFinder
ストアドプロシージャ、トリガおよび/またはバックグラウンドプロセスを使用します。フレームワークとソースに依存します。 –
可能であれば、必要でないようにデータ表現を変換します。例えば。固定データを保存し、必要に応じてそのデータに基づく計算を残しておきます。例えば、誰かの年齢を保存するのではなく、DOBを保存して年齢を計算します。 –