我有一个问题,我正在尝试创建一个服务来连接到我创建的 API。
这个服务每小时都要连接Mysql中的一个数据库,看看有没有一定的值。
例如,每次我都会查看字段 x 是否具有值 y。如果是真的,将不得不运行一些东西。
我已经阅读了一些关于 Threads 和 System.Threading.Timer 的东西,但是不太明白,有人可以给我一个实际的例子或正确的方法吗,我在找什么,好吗?
提前致谢 ..
我有一个问题,我正在尝试创建一个服务来连接到我创建的 API。
这个服务每小时都要连接Mysql中的一个数据库,看看有没有一定的值。
例如,每次我都会查看字段 x 是否具有值 y。如果是真的,将不得不运行一些东西。
我已经阅读了一些关于 Threads 和 System.Threading.Timer 的东西,但是不太明白,有人可以给我一个实际的例子或正确的方法吗,我在找什么,好吗?
提前致谢 ..
创建一个简单的程序来满足您的需要,并将其作为每小时运行的Windows 任务运行。
创建一个 Windows 服务并给它一个 1 小时的时间间隔。此 Windows 服务将始终运行,但会在指定的时间间隔触发对数据库的查询。使用 Windows 服务,您不必搞乱线程和所有内容。
partial class YourService : ServiceBase
{
Timer timer = new Timer();
...
...
public YourService()
{
InitializeComponent();
}
/// <summary>
///
protected override void OnStart(string[] args)
{
timer.Interval = 1000000; /*The interval of the Windows Service Cycle set this to one hour*/
timer.Start();
timer.Enabled = true;
timer.AutoReset = true;
timer.Elapsed += new ElapsedEventHandler(OnElapseTime); /*fire the event after each cycle*/
}
private void OnElapseTime(object sender, ElapsedEventArgs e)
{
// HERE DO UR DATABASE QUERY AND ALL
}
...
...
}
创建一个 Windows 服务并将其移动到您拥有该应用程序的服务器。此 Windows 服务将全天 24 小时运行,并满足您的要求。
类程序:ServiceBase { System.Timers.Timer 计时器;
static void Main(string[] args)
{
ServiceBase.Run(new Program());
}
public Program()
{
this.ServiceName = "DB Sync";
}
protected override void OnStart(string[] args)
{
base.OnStart(args);
InitializeTimer();
}
protected override void OnStop()
{
base.OnStop();
}
protected void InitializeTimer()
{
try
{
if (timer == null)
{
timer = new System.Timers.Timer();
timer.Enabled = true;
timer.AutoReset = true;
timer.Interval = 60000 * 1;
timer.Enabled = true;
timer.Elapsed += timer_Elapsed;
}
}
catch (Exception ex)
{
}
finally
{
}
}
protected void timer_Elapsed(object source, System.Timers.ElapsedEventArgs e)
{
TimerTick();
timer.Interval = 60000 * Convert.ToDouble(ConfigurationManager.AppSettings["TimerInerval"]);
}
private void TimerTick()
{
try
{
// Query the DB in this place.
}
catch (Exception ex)
{
}
}
}