当前位置:编程学习 > C#/ASP.NET >>

System.Timers.Timer和System.Threading.Timer 的事件不能触发的问题

我之前一直使用System.Timers.Timer来实现定时处理某些业务的程序,代码如下:
protected void Application_Start(Object sender, EventArgs e)
{
try
{
//在应用程序启动时运行的代码
int Interval = 10000;//默认时间间隔为2分钟(120000毫秒)
System.Timers.Timer mytimer = new System.Timers.Timer();
mytimer.Elapsed += new System.Timers.ElapsedEventHandler(OnTimeEvent);
mytimer.AutoReset=true;
mytimer.Interval = Interval;
try
{
mytimer.Interval = int.Parse(System.Configuration.ConfigurationSettings.AppSettings["Interval"].ToString()); }
catch(Exception ex)
{
Components.WebLogs.CreateErrorLog("时间:"+DateTime.Now.ToString()+ex.Message);
}
mytimer.Enabled = true;
                //System.Threading.Timer timer的方式
System.Threading.Timer timer = new System.Threading.Timer(new TimerCallback(OnTimeThreadingTimer), null, 0, Interval);
}
catch(Exception ex)
{
Components.WebLogs.CreateErrorLog(DateTime.Now.ToString() + "\r\n" +  ex.Message + "\r\n" + ex.StackTrace + "\r\n");
}
}

现在突然之间好像就不行了,我也不知道什么原因,我的系统是win2003,.Net框架是1.1的。
请各位知道原因或在这方面有经验的人不吝赐教,谢谢。 --------------------编程问答-------------------- 突然之间就不行啦 哎呀 真突然 --------------------编程问答-------------------- --------------------编程问答-------------------- System.Configuration.ConfigurationSettings.AppSettings["Interval"].ToString()
这种不要再加.ToString(),害人害已
不懂为什么mytimer里面还要套timer
把子线程中的异常以及timer的状态都处理一下,查日志 --------------------编程问答-------------------- System.Configuration.ConfigurationSettings.AppSettings["Interval"].ToString()
这种不要再加.ToString(),害人害已
这个我错了。

不懂为什么mytimer里面还要套timer
这个是加了个System.Threading.Timer,但这种好像事件也没有触发。

把子线程中的异常以及timer的状态都处理一下,查日志 
这个好像没报错,日志没内容。 --------------------编程问答-------------------- 用服务器自带的计划任务执行程序不是更加简单吗? --------------------编程问答--------------------
引用 5 楼 aks393482077 的回复:
用服务器自带的计划任务执行程序不是更加简单吗?


你说的计划任务是数据库的吧,有些定时操作不是针对数据库,比如你要删除过期的日志。 --------------------编程问答-------------------- 处理日志通常有两种方式:
1.归档:可以按照日期或者设定的大小进行归档
2.循环写:当日志大小超过设定的限制后,Tucate(清空所有内容)继续从头开始写

你可以在OnTimeEvent处理中加一条日志,纪录timer.Enable HttpContext.Current.Request.Url等
然后查日志
--------------------编程问答-------------------- FileMode.Truncate --------------------编程问答--------------------
引用 6 楼 yanyoujian 的回复:
Quote: 引用 5 楼 aks393482077 的回复:

用服务器自带的计划任务执行程序不是更加简单吗?


你说的计划任务是数据库的吧,有些定时操作不是针对数据库,比如你要删除过期的日志。


日志的知识学习了!
现在是它根本就不触发事件,也就不调用OnTimeEvent方法,这也就是今天的问题。

补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,