Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.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# 对C中API触发的事件作出反应#_C#_Events - Fatal编程技术网

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

C# 对C中API触发的事件作出反应#,c#,events,C#,Events,我使用的API具有以下EventHandler: static EventHandler<GPRSArgs> EventStateChanged 静态EventHandler EventStateChanged 如何在客户端应用程序中接收这些事件,以便对其作出反应?只需挂接到此事件即可。您只提供了很少的代码,但假设您的类名是MyClass,您可以这样做 MyClass.EventStateChanged += MyEventHandler 与 或者和一只羔羊搭讪: MyClas

我使用的API具有以下EventHandler:

static EventHandler<GPRSArgs> EventStateChanged
静态EventHandler EventStateChanged

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

只需挂接到此事件即可。您只提供了很少的代码,但假设您的类名是MyClass,您可以这样做

MyClass.EventStateChanged += MyEventHandler

或者和一只羔羊搭讪:

MyClass.EventStateChanged += (sender, e) => { /* whatever you want */ }
APIClass.EventStateChanged += (sender, e) => { /* Code to react to the event */ }

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

我假设
APIClass
是API与
EventStateChanged
事件一起拥有的类

在代码的某个地方,您订阅了以下活动:

APIClass.EventStateChanged += EventStateChangedHandler;
这假设您有如下方法:

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

您可以使用lambda在一行中完成此操作:

MyClass.EventStateChanged += (sender, e) => { /* whatever you want */ }
APIClass.EventStateChanged += (sender, e) => { /* Code to react to the event */ }

订阅活动

拉姆达:

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

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

EventStateChanged += Listener;

我假设您在声明中遗漏了一个
公共
和一个
事件

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

差不多。

您需要订阅活动:

theClassWithEvent.EventStateChanged += 
    delegate (object sender, GRPSArgs e)
    {
        //process the event
    };
还需要从ClassWithEvent中调用该事件以提醒所有订阅者:

if (EventStateChanged != null)
{
    EventStateChanged(someObject, new GRPSArgs());
}
注意上面使用的
someObject
,因为公开的事件是
静态的
,您不能传递
这个
,因此发送方,需要发送一些适当的东西。不过,既然您说您是从API使用这个,我想我们可以假设你不需要打这个电话,只需要订阅活动