我有点问题。我找不到合适的标题,对不起
我的数据库中有一个时间列,我想在currenttime==timeValueAtMyDatabase
时做一些事情(不重要)。怎么样?
if(currenttime==timeValueAtMyDatabase)
{
//do something
}
答案 0 :(得分:2)
如果你对在不同的线程中执行的代码没问题,你可以使用你想要的任何库(在这种情况下是Rx),我个人更喜欢这种方法:
Observable.Timer(timeToDoTheThing).Subscribe(codeToRun);
timeToDoTheThing
是应该执行代码的时间,codeToRun
是在到达时间时将运行的代码(以返回委托的形式获取一个长参数)
有些注意事项:
以下是一个完整的程序,可以举例说明这一点。您需要将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);
}
}
}
答案 1 :(得分:1)
如果这是Windows窗体应用程序,您可以使用计时器并检查某些条目是否少于DateTime.Now
。
如果是Web应用程序,则可以使用cron作业。请查看以下链接:Creating Cron Jobs in C#。
答案 2 :(得分:1)
使用在适当的时间间隔内打勾的计时器控件。 在任何时候刻度将当前时间与数据库中的时间进行比较。 您需要考虑差异。例如,如果它以0.1秒,1.1秒,2.1秒为单位,则数据库中的时间为1秒。 您必须找到适当的方法来解释这些差异。