Windows 服务不会循环写入日志文件
Windows Service will not write to log file in loop
我正在编写我的第一个 windows 服务,开始时它只是写入一个日志文件,它运行良好。我实际上需要该服务来遍历 json 文件中的条目,我在其他地方使用过该文件没有任何问题。所以我的服务启动了一个计时器,并且每 60 秒触发一个事件;
System.Timers.Timer timer = new System.Timers.Timer();
timer.Interval = 60000; // 60 seconds
timer.Elapsed += new System.Timers.ElapsedEventHandler(this.OnTimer);
timer.Start();
这绝对完美,我的 OnTimer 事件也是如此;
public void OnTimer(object sender, System.Timers.ElapsedEventArgs args)
{
eventLog1.WriteEntry("Drive Space monitoring initiated", EventLogEntryType.Information, eventId++);
}
这将完全按照我预期的每 60 秒将条目放入日志中。当我尝试向 OnTimer 事件添加循环时,我的问题就来了。为简单起见,这是我添加的;
int count = 4;
for(int x = 1; x <= count; x++)
{
string msg = "This is just a counter: " + x.ToString();
eventLog1.WriteEntry(msg, EventLogEntryType.Information, eventId++);
}
这绝对没有任何效果,当 OnTimer 事件触发时,我的日志文件中不会再添加任何条目。
使用 System.Threading.Timer
而不是 System.Timers.Timer
。
System.Timers.Timer
在 windows 服务中使用时会出现问题,它会吞下所有异常。
我正在编写我的第一个 windows 服务,开始时它只是写入一个日志文件,它运行良好。我实际上需要该服务来遍历 json 文件中的条目,我在其他地方使用过该文件没有任何问题。所以我的服务启动了一个计时器,并且每 60 秒触发一个事件;
System.Timers.Timer timer = new System.Timers.Timer();
timer.Interval = 60000; // 60 seconds
timer.Elapsed += new System.Timers.ElapsedEventHandler(this.OnTimer);
timer.Start();
这绝对完美,我的 OnTimer 事件也是如此;
public void OnTimer(object sender, System.Timers.ElapsedEventArgs args)
{
eventLog1.WriteEntry("Drive Space monitoring initiated", EventLogEntryType.Information, eventId++);
}
这将完全按照我预期的每 60 秒将条目放入日志中。当我尝试向 OnTimer 事件添加循环时,我的问题就来了。为简单起见,这是我添加的;
int count = 4;
for(int x = 1; x <= count; x++)
{
string msg = "This is just a counter: " + x.ToString();
eventLog1.WriteEntry(msg, EventLogEntryType.Information, eventId++);
}
这绝对没有任何效果,当 OnTimer 事件触发时,我的日志文件中不会再添加任何条目。
使用 System.Threading.Timer
而不是 System.Timers.Timer
。
System.Timers.Timer
在 windows 服务中使用时会出现问题,它会吞下所有异常。