少し問題があります。適切なタイトルが見つかりませんでした、申し訳ありません
データベースに時間列があり、いつでも何か(重要ではない)をしたいcurrenttime==timeValueAtMyDatabase
. どのように?
if(currenttime==timeValueAtMyDatabase)
{
//do something
}
別のスレッドで実行されているコードに問題がなく、必要なライブラリ (この場合は Rx) を使用できる場合は、個人的には次の方法をお勧めします。
Observable.Timer(timeToDoTheThing).Subscribe(codeToRun);
timeToDoTheThing
はcodeToRun
コードを実行する時刻であり、その時刻に達したときに実行されるコードです (1 つの長いパラメーターを受け取る void を返すデリゲートの形式で)。
注意事項:
以下は、これを例示する完全なプログラムです。Rx-Main NuGet パッケージをプロジェクトにインストールして、.NET 4+ に対して動作させ、ビルドする必要があります。
using System;
using System.Reactive.Linq;
using System.Threading;
namespace Test
{
public class Class
{
public static void Main()
{
var timeToDoTheThing = new DateTimeOffset(2013, 10, 19, 22, 19, 30, TimeSpan.Zero);
Action<long> codeToRun = _ => Console.WriteLine("It is time.");
Observable.Timer(timeToDoTheThing).Subscribe(codeToRun);
Thread.Sleep(100000);
}
}
}
これが Windows フォーム アプリケーションの場合は、タイマーを使用して、一部のエントリが 未満かどうかを確認できますDateTime.Now
。
Web アプリケーションの場合は、cron ジョブを使用できます。次のリンクを確認してください: C# での Cron ジョブの作成。