Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法使用实例引用访问System.Diagnostics.EventLog_C#_Windows_Service_Event Log - Fatal编程技术网

C# 无法使用实例引用访问System.Diagnostics.EventLog

C# 无法使用实例引用访问System.Diagnostics.EventLog,c#,windows,service,event-log,C#,Windows,Service,Event Log,我正在创建Windows服务,在尝试写入事件日志时遇到了一个小问题。我有以下代码 class WindowsService : ServiceBase { public WindowsService() { ((ISupportInitialize)this.EventLog).BeginInit(); if (!EventLog.SourceExists(this.ServiceName)) { Even

我正在创建Windows服务,在尝试写入事件日志时遇到了一个小问题。我有以下代码

class WindowsService : ServiceBase
{
    public WindowsService()
    {
        ((ISupportInitialize)this.EventLog).BeginInit();

        if (!EventLog.SourceExists(this.ServiceName))
        {
            EventLog.CreateEventSource(this.ServiceName, "Application");
        }
        ((ISupportInitialize)this.EventLog).EndInit();
    }
}
这是基于MSDN文章和这里的另一个SO问题,它一直工作到昨晚,但今天早上它不工作的错误

无法使用实例引用访问成员“EventLog.SourceExists(string)”;改为使用类型名称限定它

无法使用实例引用访问成员“EventLog.CreateEventSource(string,string)”;改为使用类型名称限定它

我不知道为什么,我已经检查了一个备份,这也是抛出一个错误

有人有什么想法吗


谢谢

SourceExists
CreateEventSource
都是静态方法,您需要使用类型名称而不是实例变量来限定它们。根据错误和以下情况:

this.EventLog
您可能有一个名为
EventLog
的实例变量。将其重命名为不太容易混淆的名称,例如
CurrentEventLog
。与现有名称不冲突的任何有意义的名称


基本上,不要将变量命名为与其类型相同的名称。这不仅会让编译器感到困惑,还会让需要维护该代码的任何人感到困惑。

这是什么类型的。ServiceName?没错,我忘了我在数据库中合并了一个名为EventLog的表,该表已重命名,当然可以正常工作。