日期:2014-05-18  浏览次数:20866 次

C# windows服务程序
我加了个System.Timers.timer控件,
我在属性中设置了
timer1.Interval 为 60000;
timer1.Enabled 为true;
private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
  if(条件)
  {
  dosth();
  }
}
为什么在服务启动后能够执行 dosth()一次后,就不再执行了,然后再查看服务时服务停止了,这是为什么
我在winform里测试过,是可以多次执行的

------解决方案--------------------
你查看一下你的服务可能出错了 有些WINform里面才能操作的 建议加上日志功能
------解决方案--------------------
你尝试下载 onstart 下加入 timer.start
你的dosth()是不是有一些冲突型语句,如创建文件,我曾遇到过这中情况, 服务会提示 服务没有什么可做或。。。。 提示 然后 服务就停止了。
说的不好 希望能给你些提示。。
------解决方案--------------------
可能dosth()里面存在异常,程序退出了。加个try catch 把你的dosth() 包在里面在看看。
------解决方案--------------------
估计是dosth里面引发了异常,

写服务程序要有抓异常的习惯,不过系统日志里应该记录有异常退出,你可以查一下系统日志,不过最好自己抓,

private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
try
{
if(条件)
{
dosth();
}
}
catch(Exception e)
{
//写代码把e写入日志文件,
}
}

------解决方案--------------------
应该是出错了,看看系统日志
------解决方案--------------------
dosth()里面阻塞了,看你这个函数里面调用了其他什么没有
我以前也碰到过这样的问题
------解决方案--------------------
控制版面里面--》管理工具--》查看事件
------解决方案--------------------
dosth();异常了。 直接导致服务器程序停止。
------解决方案--------------------
调试吧。 单步调试
------解决方案--------------------
创建委派