2011-08-26 24 views
0

觸發的事件,我使用的是具有以下事件處理程序的API:反應,從而API在C#

static EventHandler<GPRSArgs> EventStateChanged 

我怎麼能接受我的客戶端應用程序這些事件,這樣我可以給他們作何反應?

回答

1

訂閱活動。

拉姆達:

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

代表:

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

EventStateChanged += Listener; 
1

剛入此事件。你給了一些代碼,但假設你的類名爲MyClass的你可以做

MyClass.EventStateChanged += MyEventHandler 

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

或鉤住了一個拉姆達:

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

訂閱它,你會任何其他事件。

我認爲APIClass是API與EventStateChanged事件相關的類。

某處在你的代碼中訂閱如下事件:

APIClass.EventStateChanged += EventStateChangedHandler; 

這裏假設你有一個方法如下:

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

你可以在一行中做到這一點,用拉姆達:

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

我假設你離開了一個public,並在聲明中event

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

然後用它

void DoSomething(GPRSArgs e) 
{ 
    // whatever 
} 

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

排序

0

您需要訂閱事件:

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

本次活動還將需要被調用,以提醒所有用戶,從theClassWithEvent內:

if (EventStateChanged != null) 
{ 
    EventStateChanged(someObject, new GRPSArgs()); 
} 

注意使用上述someObject ,因爲暴露的事件是static,你不能通過thissender,因此需要發送一些東西。雖然,既然你說你正在使用API​​,我認爲我們可以假設你不需要打這個電話,而只應該訂閱這個事件。