2016-12-06 14 views
-3

データベーステーブルを自動的に更新するタイマーを実装する最良の方法は何ですか?コードサンプルは素晴らしいでしょう!ターゲットメソッドを24時間ごとに呼び出すようにしたい場合は、メソッドが18:30に毎日起動するようにしてください。毎日固定の時間に自動的にデータベーステーブルを更新するタイマーを設定する方法

私はあなたが異なった方法の多くでやりたいが、サードパーティのライブラリを使用すると、ほとんどが最も安全な方法であることができ、C#

+2

スケジュールされたタスク? – BugFinder

+1

ストアドプロシージャ、トリガおよび/またはバックグラウンドプロセスを使用します。フレームワークとソースに依存します。 –

+0

可能であれば、必要でないようにデータ表現を変換します。例えば。固定データを保存し、必要に応じてそのデータに基づく計算を残しておきます。例えば、誰かの年齢を保存するのではなく、DOBを保存して年齢を計算します。 –

答えて

0

で働いています。だから私はあなたをお勧めしますHangfire

バックグラウンド操作を処理してスケジュールすることができます。あなたの例では、定期的なジョブを使用することができます。

RecurringJob.AddOrUpdate(
    () => Console.WriteLine("Recurring!"), 
    Cron.Daily); 
+0

ありがとうございました! –

-3
while(true) 
{ 
if(DateTime.Now.Hour==18 && DateTime.Now.Minute==30) 

{ はここにあなたの更新機能を呼び出します。

}

} 時間条件は、それがデータベースを更新します満たされforever.Whenコードのこの部分が実行されます。

+0

これは無効なコードです。 'datetime'は構造体の正しい名前ではなく、' now'も静的フィールドと一致するように大文字ではありません。 '18:30'は文字列ではなく、他の種類の変数型でもありません。 – ColinM

+0

これはひどい考えです。 –

+0

ありがとうございました –

-1

これは簡単なクラスです。

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(); 
      } 
+0

これは有効な答えです、なぜそれはdownvotedされましたか? – ColinM

+0

ありがとうございました –

関連する問題