C# 写入事件日志时出错,是否阻止windows服务启动?

C# 写入事件日志时出错,是否阻止windows服务启动?,c#,windows-services,event-log,C#,Windows Services,Event Log,我正在使用以下代码在我的windows服务应用程序中创建自定义事件日志: public ServiceConstructor() { InitializeComponent(); if (!EventLog.SourceExists("WinService")) { EventLog.CreateEventSource("WinService", "WinServiceLog"); eventLog1.Source = "WinService"; eventL

我正在使用以下代码在我的windows服务应用程序中创建自定义事件日志

public ServiceConstructor()
{
  InitializeComponent();
  if (!EventLog.SourceExists("WinService"))
  {
    EventLog.CreateEventSource("WinService", "WinServiceLog");
    eventLog1.Source = "WinService";
    eventLog1.Log = "WinServiceLog";
  }
}
protected override void OnStart(string[] args)
{
 eventLog1.WriteEntry("Started");
}
在安装service.msi之后,当我启动服务时,它启动然后停止。然后,我在EventViewer windows日志部分中发现以下错误:

服务无法启动。 System.ArgumentException:写入前未设置源属性 到事件日志

位于System.Diagnostics.EventLog.WriteEntry(字符串消息,EventLogEntryType类型,Int32 eventID,Int16类别,字节[]rawData)
位于System.Diagnostics.EventLog.WriteEntry(字符串消息)
在WinService.Service.OnStart上(字符串[]args)
在System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback(对象状态)

尝试以下操作:

EventLog.CreateEventSource(“WinService”、“应用程序”)

eventLog1.Log=“应用程序”

还可以在OnStart中添加以下内容:

eventLog1.Log=“应用程序”


eventLog1.Source=“WinService”

如果源代码已经存在,则看起来您没有初始化eventLog1.source

建议您将初始化代码移到OnStart并移出构造函数

并将这两行从if语句中移出:

eventLog1.Source = "WinService";
eventLog1.Log = "WinServiceLog";