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

本文详细介绍了如何在C#中使用System.Timers库来创建定时任务,并通过实例展示了如何在服务中触发Elapsed事件,执行数据库操作。

本文摘自http://www.cnblogs.com/seyon/archive/2007/06/29/800304.html

具体原因,微软自称是Framework的bug,具体原因在:
http://www.cnblogs.com/Missvv/archive/2007/03/11/670797.html
但是无论是windows窗体中timer还是组件中的timer都是继承自System.Windows.Form.Timer,并不是我们需要的System.Timers ,继承自System.Timers 的timer只有手动创建

None.gif public  Service1()
ExpandedBlockStart.gif         {
InBlock.gif            InitializeComponent();
InBlock.gif            
InBlock.gif            System.Timers.Timer t = new System.Timers.Timer(200);//实例化Timer类,设置间隔时间为10000毫秒; 
InBlock.gif            t.Elapsed += new System.Timers.ElapsedEventHandler(theout);//到达时间的时候执行事件; 
InBlock.gif            t.AutoReset = true;//设置是执行一次(false)还是一直执行(true); 
InBlock.gif            t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件; 
InBlock.gif            
ExpandedBlockEnd.gif        }

None.gif         public   void  theout( object  source, System.Timers.ElapsedEventArgs e)
ExpandedBlockStart.gif         {
InBlock.gif            SqlConnection conn = new SqlConnection("Server=.;UID=eaglesoft;PWD=password;DataBase=exchange");
InBlock.gif            SqlCommand comm = new SqlCommand("INSERT INTO op_album(album_name,album_score,album_picscr) VALUES('1','2','3')", conn);
InBlock.gif            conn.Open();
InBlock.gif            comm.ExecuteNonQuery();
InBlock.gif            conn.Close();
ExpandedBlockEnd.gif        }
   
这样就可以触发Elapsed事件了,注册服务一切正常,能触发该事件

转载于:https://www.cnblogs.com/ErgonWJ/archive/2011/06/16/2082588.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值