我用C#写的一个服务通过Timer控件没一个小时触发下面的一个循环
foreach (DataTable table in ds_xml.Tables)
{
   .../*记录调试日志*/
}
结果根据调试信息发现这个循环运行了一半就不运行了,且没有异常,且下一个小时也无法触发Timer事件,只有重启服务才行?为什么?

解决方案 »

  1.   

    try catch 试一下
    重得找出它为什么停下来
    里面有没有break之类的语句
      

  2.   

    应该是代码有问题吧,你用Console.WriteLine(i.ToString())在你的每一次Loop中,看看是在哪一个Loop中有问题,第二次你再运行到这个Loop时再查看里面的变量是否都是你所预期的那样!
      

  3.   

    用try catch捕捉一下信息,不行就取迭代器做
      

  4.   

    什么服务?Windowservice?把代码贴出来看下..
      

  5.   

    你是用system.timers.timer还是工具里的timer,windowsserviece要用system.timers.timer
      

  6.   

    搜索一下log4net,用于调试信息输出不错的
      

  7.   

    同意楼上的,如果是WindowsSevice,用Timer时注间用System.Timers.Timer
      

  8.   

    系统服务不支持窗口操作,所以不要使用System.Windows.Forms.Timer,此计时器最宜用于 Windows 窗体应用程序中,并且必须在窗口中使用。而服务本身运行在无窗口环境,所以要用System.Timers.Timer
      

  9.   

    有try和catch,但是没有捕捉到异常,也没有什么break语句
      

  10.   

    请问:代码能不能这么写:
    for(i=1;i<4;i++)
    {
      try
      {...}
      catch(Exception e)
      {
        //给出提示
        continue;//继续下一条
      }    
    }