Как использовать один таймер для проверки базы данных и другой таймер из этой базы данных для выполнения другой работы в службе windows?
I want my windows service to keep checking SQL server table every 30 secs with one timer and get another interval timer value from this table to do another job. How can I achieve this?
Что я уже пробовал:
protected override void OnStart(string[] args) { try { timer1.Elapsed += new ElapsedEventHandler(timer1_Elapsed); timer1.Interval = 30000; timer1.Enabled = true; timer1.Start(); } catch (Exception ex) { ErrorLogging(ex); } } protected override void OnStop() { timer1.Enabled = false; } private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { try { con = new SqlConnection("server=servername; database=databasename;uid=username; password=password"); con.Open(); cmd = new SqlCommand("Select TOP(1) [IntervalTime] from [dbo].[Intervals] ORDER BY [IntervalTime] DESC", con); int interval = cmd.ExecuteNonQuery(); timer2.Elapsed += new ElapsedEventHandler(timer2_Elapsed); timer2.Interval = interval; timer2.Enabled = true; timer2.Start(); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.Message); } finally { cmd.Dispose(); con.Dispose(); } } private void timer2_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { // Do other job }
Can anyone please change this code to make it working.
CS2011
Вам следует избегать таймеров. Это даст вам хит производительности. если ваше требование состоит в том, чтобы проверить, были ли некоторые данные обновлены в таблице, и выполнить некоторую работу на основе этого, я бы рекомендовал использовать службу брокера sql server.