到达代码,不执行并退出而没有错误

我的所有代码都可以正常工作:

using System.Diagnostics; namespace WebPortalLogging { public static class EventLogging { public static void LogEvent(string origin, string message, EventLogEntryType eventLogEntryType, int eventId) { const string source = "Software"; const string log = "Application"; if (!EventLog.SourceExists(source)) EventLog.CreateEventSource(source, log); EventLog.WriteEntry(source, message, eventLogEntryType, eventId); } } } 

我甚至在另一个项目中使用这个类,它工作正常。 当它到达这一行时:

if(!EventLog.SourceExists(source))EventLog.CreateEventSource(source,log);

它击中了这条线并退出。

这是我输出中的内容:

 The thread 'vshost.NotifyLoad' (0x28c) has exited with code 0 (0x0). The thread 'vshost.LoadReference' (0x470) has exited with code 0 (0x0). 'VmBackup.vshost.exe' (Managed (v4.0.30319)): Loaded 'D:\Google Drive\Code\VMBackup\VMBackup\bin\Debug\VmBackup.exe', Symbols loaded. 'VmBackup.vshost.exe' (Managed (v4.0.30319)): Loaded 'D:\Google Drive\Code\VMBackup\VMBackup\bin\Debug\WebPortalLogging.dll', Symbols loaded. The thread '' (0xa44) has exited with code 0 (0x0). 'VmBackup.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Configuration\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. The thread '' (0x107c) has exited with code 0 (0x0). The thread '' (0x1838) has exited with code 0 (0x0). The thread 'vshost.RunParkingWindow' (0xa78) has exited with code 0 (0x0). The thread '' (0x10e0) has exited with code 0 (0x0). The program '[6436] VmBackup.vshost.exe: Program Trace' has exited with code 0 (0x0). The program '[6436] VmBackup.vshost.exe: Managed (v4.0.30319)' has exited with code 0 (0x0). 

它没有到达EventLog.WriteEntry。 它也没有输出到事件日志。 我重新启动了VS2010并没有帮助。 我已经开启了所有错误提示。

我错过了什么?

首先,我会在条件周围使用大括号,因为如果EventLog没有源,EventLog应该写入条目有点不清楚。

 if (!EventLog.SourceExists(source)) { EventLog.CreateEventSource(source, log); } EventLog.WriteEntry(source, message, eventLogEntryType, eventId); 

还尝试将其包装在try/catch块中,以查看是否有任何未处理的exception导致程序随机退出。

 try { if (!EventLog.SourceExists(source)) { EventLog.CreateEventSource(source, log); } EventLog.WriteEntry(source, message, eventLogEntryType, eventId); } catch (Exception e) { Console.WriteLine(e); } 

附加:线程'vshost.NotifyLoad' (0x28c) has exited with code 0 (0x0) 。 线程'vshost.LoadReference' (0x470) has exited with code 0 (0x0) 。 不是错误。 Visual Studio告诉您后台线程已退出。 0表示线程成功运行。

我怀疑它正在尝试创建eventLog Source并抛出exception,因为这需要管理员权限。