对C#中API触发的事件做出反应

时间:2011-08-26 08:44:25

标签: c# events

我正在使用具有以下EventHandler的API:

static EventHandler<GPRSArgs> EventStateChanged

如何在我的客户端应用程序中接收这些事件,以便我能对它们作出反应?

5 个答案:

答案 0 :(得分:1)

刚刚加入此事件。您提供的代码很少,但假设您的类名是MyClass,则可以执行

MyClass.EventStateChanged += MyEventHandler

void MyEventHandler(object sender, GRPSArgs e)
{
 // ...
}

或与lambda联系:

MyClass.EventStateChanged += (sender, e) => { /* whatever you want */ }

答案 1 :(得分:1)

订阅该活动。

拉​​姆达:

EventStateChanged += (sender, gprsArgs) => { do your thing }

委托:

void Listener(object sender, GPRSArgs args)
{
    do your thing
}

EventStateChanged += Listener;

答案 2 :(得分:0)

订阅它,就像任何其他活动一样。

我认为APIClass是API与EventStateChanged事件的类。

您的代码中某处您订阅了以下活动:

APIClass.EventStateChanged += EventStateChangedHandler;

这假设你有一个方法如下:

private void EventStateChangedHandler(object sender, GPRSArgs e)
{
    // Code to react to the event.
}

您可以在一行中使用lambda:

执行此操作
APIClass.EventStateChanged += (sender, e) => { /* Code to react to the event */ }

答案 3 :(得分:0)

我假设您在声明中遗漏了publicevent

public class GPRSThingy
{
    public static event EventHandler< GPRSArgs > EventStateChanged;
    ...
}

然后使用它

void DoSomething(GPRSArgs e)
{
    // whatever
}

var gprstThingy = new GPRSThingy();
gprstThingy.EventStateChanged += (sender, e) => { DoSomething(e); };

排序。

答案 4 :(得分:0)

您需要订阅该活动:

theClassWithEvent.EventStateChanged += 
    delegate (object sender, GRPSArgs e)
    {
        //process the event
    };

还需要调用该事件,以便在theClassWithEvent

内提醒所有订阅者
if (EventStateChanged != null)
{
    EventStateChanged(someObject, new GRPSArgs());
}

请注意上面使用someObject,因为公开的事件为static,您无法通过thissender,因此需要发送一些内容。但是,既然你说你是从API中使用它,我想我们可以假设你不需要进行这个调用,只应该订阅这个事件。