Windows服务中Timer组件Tick无法触发

Windows服务中Timer组件Tick无法触发 具体原因,微软自称是Framework的bug:

但是无论是windows窗体中timer还是组件中的timer都是继承自System.Windows.Form.Timer,并不是我们需要的System.Timers ,继承自System.Timers 的timer只有手动创建

C#代码  

  1. public Service1()
  2. {
  3. InitializeComponent();
  4. System.Timers.Timer t = new System.Timers.Timer(200);//实例化Timer类,设置间隔时间为10000毫秒;
  5. t.Elapsed += new System.Timers.ElapsedEventHandler(theout);//到达时间的时候执行事件;
  6. t.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
  7. t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;
  8. }
  9. public void theout(object source, System.Timers.ElapsedEventArgs e)
  10. {
  11. SqlConnection conn = new SqlConnection("Server=.;UID=eaglesoft;PWD=password;DataBase=exchange");
  12. SqlCommand comm = new SqlCommand("INSERT INTO op_album(album_name,album_score,album_picscr) VALUES('1','2','3')", conn);
  13. conn.Open();
  14. comm.ExecuteNonQuery();
  15. conn.Close();
  16. }
public Service1(){            InitializeComponent();            System.Timers.Timer t = new System.Timers.Timer(200);//实例化Timer类,设置间隔时间为10000毫秒;         t.Elapsed += new System.Timers.ElapsedEventHandler(theout);//到达时间的时候执行事件;         t.AutoReset = true;//设置是执行一次(false)还是一直执行(true);         t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件; }public void theout(object source, System.Timers.ElapsedEventArgs e){          SqlConnection conn = new SqlConnection("Server=.;UID=eaglesoft;PWD=password;DataBase=exchange");          SqlCommand comm = new SqlCommand("INSERT INTO op_album(album_name,album_score,album_picscr) VALUES('1','2','3')", conn);          conn.Open();          comm.ExecuteNonQuery();          conn.Close();}   

这样就可以触发Elapsed事件了,注册服务一切正常,能触发该事件

www.wp360.cnwww.android163.comwww.wak99.comwww.33vd.com
原文地址:https://www.cnblogs.com/Eleanore/p/2469607.html