global.asax中写入定时器发布到服务器不启动
代码如下:void Application_Start(object sender, EventArgs e)
{
//在应用程序启动时运行的代码
System.Threading.Thread my_timer1 = new System.Threading.Thread(write_1);
my_timer1.Start();
System.Threading.Thread my_timer2 = new System.Threading.Thread(write_2);
my_timer2.Start();
}
//月定时
private void write_1()
{
System.Timers.Timer mytimer1 = new System.Timers.Timer(600000);
mytimer1.Enabled = true;
mytimer1.Elapsed += new System.Timers.ElapsedEventHandler(mytimer_month);
mytimer1.AutoReset = true;
}
//日定时
private void write_2()
{
System.Timers.Timer mytimer2 = new System.Timers.Timer(600000);
my_timer2.Enabled = true;
my_timer2.Elapsed += new System.Timers.ElapsedEventHandler(mytimer_day);
my_timer2.AutoReset = true;
}
备注:2个定时器 的事件 省略
为了方便做统计,我写了2个定时器,现在问题是 我在本地跑的时候是正常的,昨晚我发布到服务器上今早我看的时候发现定时器没启动,请教各位,如何处理这个问题呢,保证我每次重新部署后都能正常启动定时器,谢谢 在线等待!! --------------------编程问答-------------------- 都是用线程System.Threading.Thread。Timer 试试不要使用System.Timers.Timer
也可能是你创建的Timer
太多了 --------------------编程问答-------------------- TIMER的使用 --------------------编程问答-------------------- 有什么具体的解决方法吗? --------------------编程问答-------------------- 用window服务代替。 web应用程序不是一直在运行的。 --------------------编程问答-------------------- --------------------编程问答--------------------
这种定时的的任务。。
建议建windows计划。。 --------------------编程问答-------------------- 难道要独立写一个windows服务? 如果改写成 如下 行不行?
void Application_Start(object sender, EventArgs e)
{
//在应用程序启动时运行的代码
System.Threading.Thread my_timer1 = new System.Threading.Thread(write_1);
my_timer1.Start();
System.Threading.Thread my_timer2 = new System.Threading.Thread(write_2);
my_timer2.Start();
}
//月定时
System.Timers.Timer mytimer1 = new System.Timers.Timer(600000);
private void write_1()
{
mytimer1.Enabled = true;
mytimer1.Elapsed += new System.Timers.ElapsedEventHandler(mytimer_month);
mytimer1.AutoReset = true;
GC.KeepAlive(mytimer1);
}
//日定时
System.Timers.Timer my_timer2 = new System.Timers.Timer(600000);
private void write_2()
{
//System.Timers.Timer my_timer2 = new System.Timers.Timer(24*3600000);
my_timer2.Enabled = true;
my_timer2.Elapsed += new System.Timers.ElapsedEventHandler(mytimer_day);
my_timer2.AutoReset = true;
GC.KeepAlive(my_timer2);
}
将原先的定时时间作为global的全局变量,再加入GC.KeepAlive();
补充:.NET技术 , ASP.NET