Windows服务不会在循环中写入日志文件

时间:2018-05-30 08:14:08

标签: c# logging windows-services event-log

我正在编写我的第一个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事件触发时,我的日志文件中没有添加更多条目。

1 个答案:

答案 0 :(得分:1)

使用System.Threading.Timer代替System.Timers.Timer

System.Timers.Timer在Windows服务中使用时会给出一些问题,它会吞下所有异常。