日期:2014-05-17  浏览次数:20813 次

c#定时执行一些操作
不考虑windows计划任务这个途径
我要每隔几个小时执行一些操作(比如删除大量文件,可能要耗费一定时间),应该如何做?
之前是简单地用一个死循环
while (true)
{
    DoAction();
    Thread.Sleep(3600*1000);
}

每隔一个小时进行一次操作,但是发现不稳定,有时候程序就死在那里,再也不运行下去了。

请各位高手给个思路,谢谢。

------解决方案--------------------
用timer吧,或者用线程,线程内部sleep
------解决方案--------------------
你那个while循环本身没有问题。
不过要保证DoAction不会死机,不会抛出未处理异常。
------解决方案--------------------
线程要是不会用的话就是timer把最常见的定时处理方式
------解决方案--------------------
用timer就行啊。
------解决方案--------------------
timer ,我写过59秒判断一次,程序跑几个月都没问题
------解决方案--------------------
肯定是timer
------解决方案--------------------
timer
应该可以吧
------解决方案--------------------
如果doaction里是执行sql操作为主可以改成用sqlserver自带的计划任务来执行。
如果不是,可以用windows服务来做。
循环的代码最好放到线程里执行,另外加上日志输出,看看程序为什么死。