C# System.Timers.Timer中绑定事件不执行

weixin_45096763 2019-11-06 05:29:07
代码如下,在asp.net中 使用System.Timers.Timer设置定时器。在时间间隔在10分钟以下时,定时器事件可以正常执行,OnElapsedEvent事件中的log输出正常写入,但是在间隔大于10分钟的时候,OnElapsedEvent事件中的log输出只会执行一次,甚至不执行。但是两种情况下Start方法中的log均正常输出。求大神指点。

public class TimerJob
{
ILog logger = LogManager.GetLogger("errorMsg");
string timerXmlUrl = AppDomain.CurrentDomain.BaseDirectory + "TimerSpace\\TimerConfig.xml";

public TimerJob()
{ }

public void Start()
{

logger.Error(DateTime.Now.ToString("yyyyMMdd HH:mm:ss") + " TimerJob Start() 开始" + "\r\n");
try
{
Timer timer = timer = new Timer(1000 * 60 * 60 * 4);
timer.AutoReset = true;
timer.Enabled = true;
timer.Elapsed += new ElapsedEventHandler(OnElapsedEvent);
timer.Start();
}
catch (Exception e)
{
logger.Error(DateTime.Now.ToString("yyyyMMdd HH:mm:ss") + " 定时器错误! ErrorMsg:" + e.Message + "\r\n");
}

logger.Error(DateTime.Now.ToString("yyyyMMdd HH:mm:ss") + " TimerJob Start() 结束" + "\r\n");
}

/// <summary>
/// Timer的Elapsed事件执行的方法
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnElapsedEvent(Object sender, ElapsedEventArgs e)
{
logger.Error(DateTime.Now.ToString("yyyyMMdd HH:mm:ss") + " 定时器执行!");
}
}

...全文
940 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
牧歌ing 2019-11-07
  • 打赏
  • 举报
回复
Timer timer = timer = new Timer(1000 * 60 * 10)
Nick_Ngai 2019-11-07
  • 打赏
  • 举报
回复
不会立即执行的,到了间隔时间会执行,看你那个间隔时间是4小时后执行,可以手动调用一次OnElapsedEvent。 如下: Timer timer = timer = new Timer(1000 * 60 * 60 * 4); timer.AutoReset = true; timer.Enabled = true; timer.Elapsed += new ElapsedEventHandler(OnElapsedEvent); timer.Start(); // 立即执行一次 OnElapsedEvent(null, null);

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧