C# Windows Service与Timer(计时器)

           这两天被.NET的Timer搞得有相当晕!看来不能太相信Bill.Gates!
        事情是这样的:
        写了一个定时发短信的Windows服务,发布在服务器上后,发现短信没有发出去,于是就调试。测试了发短信部分的代码,没有问题,就初步确定为是Timer没有干活,
Google后,一
英文网站上说,不能用System.Windows.Forms.Timer,因为在Windows Service中,不能触发Tick事件;于是我检查了代码,果然,我用的正是这个Timer。
然后,就改成了System.Timers.Timer,以为万事大吉了,第二天发现,短信仍然没有发出去,于是,又怀疑是Timer的问题,又Google了下,网上又说这个Timer用在Windows  Service中也不行,说是要用System.Threading.Timer,于是又改此Timer。测试发现Windows Service读不也app.config,Google后,说是config文件名要写成
{ServiceName}.exe.config格式(如服务程序是BirthdaySMS.exe,则配置文件名应该BirthdaySMS.exe.config);之后,又发现Timer似乎还是干不活,仔细检查后,发现我的代码是这样写的:
         protected override void OnStart( string[ ] args )
         {
             Timer m_BirthdayTimer = new Timer( m_BirthdayTimer_Elapsed , null , 0 , 3600000 );
         }
      此方法执行后,Timer就被"回收"了!当然不行了!
      唉,真是好事多磨啊,终于把搞定了Windows Service :(

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值