日期:2014-05-20  浏览次数:20772 次

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

为什么?

------解决方案--------------------
循环内的代码有问题吧
------解决方案--------------------
try catch 试一下
重得找出它为什么停下来
里面有没有break之类的语句
------解决方案--------------------
应该是代码有问题吧,你用Console.WriteLine(i.ToString())在你的每一次Loop中,看看是在哪一个Loop中有问题,第二次你再运行到这个Loop时再查看里面的变量是否都是你所预期的那样!
------解决方案--------------------
用try catch捕捉一下信息,不行就取迭代器做
------解决方案--------------------
是否用到了多线程?可能在别处跳出了程序。不容易调试。仔细想想程序流程,哪有隐患。多做做异常处理的工作。
------解决方案--------------------
是否循环没有自动结束?
------解决方案--------------------
这要看具体代码了。。
------解决方案--------------------
什么服务?

Windowservice?

把代码贴出来看下..
------解决方案--------------------
你是用system.timers.timer还是工具里的timer,windowsserviece要用system.timers.timer
------解决方案--------------------
搜索一下log4net,用于调试信息输出不错的
------解决方案--------------------
让程序多输出 一些调试信息来,然后才能准确确定错误的所在!
------解决方案--------------------
有异常的缘故
------解决方案--------------------
同意楼上的,如果是WindowsSevice,用Timer时注间用System.Timers.Timer
------解决方案--------------------
系统服务不支持窗口操作,所以不要使用System.Windows.Forms.Timer,此计时器最宜用于 Windows 窗体应用程序中,并且必须在窗口中使用。而服务本身运行在无窗口环境,所以要用System.Timers.Timer
------解决方案--------------------
TO:请问:代码能不能这么写:

可以..

不过,像这样情况,最好不要直接给出提示,建议写日志..