不确定要在事件订阅方法中使用的类型

时间:2017-07-19 12:48:59

标签: c# action

我试图创建一个通用函数,它应该将一些线程描述为windows事件日志中的不同内部方法。所以我写道:

void SubScribeToEventLogEvent(string EventLog,int EventID,string Source, Action named ="myMethod")
{
    string query = "*[System/Level=8] and [System/EventID=" +EventID.ToString()+"]";

    EventLogQuery subscriptionQuery = new EventLogQuery(EventLog, PathType.LogName, "*[System/Level=8]");
    EventLogWatcher watcher = new EventLogWatcher(subscriptionQuery);
    watcher.EventRecordWritten += new EventHandler<EventRecordWrittenEventArgs>(named);
    watcher.Enabled = true;
}

然后我为特定事件触发了一些功能

private void myMethod(object obj,EventRecordWrittenEventArgs arg)
{
    //do something
    if (arg.EventRecord != null)
    {
        MessageBox.Show(arg.EventRecord.Id.ToString() + arg.EventRecord.FormatDescription());
        Console.WriteLine("Received event {0} from the subscription.", arg.EventRecord.Id);
        Console.WriteLine("Description: {0}", arg.EventRecord.FormatDescription());
    }
    else
    {
        Console.WriteLine("The event instance was null.");
    }
}

所以在我的主要内容中,我可以简单地写一下

SubScribeToEventLogEvent(EventlogName,200,myMethod);

然而它没有缝合工作,我在.net 4.0编码,我相信Action是一个保留的方法词来做这些事情。但是我得到一个错误(代码第一行中已经命名的红线):

SubScribeToEventLogEvent(string EventLog,int EventID,string Source, Action named ="myMethod")

显然它不能分配一个字符串值(但还有什么?),如果我删除字符串值,它仍然无法在Eventhandler函数中识别。

0 个答案:

没有答案