Mega Code Archive

 
Categories / Visual C++ .NET / Delegate
 

Fire events and event handlers

#include "stdafx.h" using namespace System; using namespace System::Threading; ref class MyEventArgs : EventArgs {    public:      property String^ Info;      MyEventArgs(String^ info)      {         Info = info;      } }; delegate void MyEventHandler(Object^ sender, MyEventArgs^ args); ref class Events {    public:       event EventHandler^ Start;       event EventHandler^ Exit;       void RaiseStartEvent()       {           Start(this, gcnew EventArgs());       }       void RaiseExitEvent()       {           Exit(this, gcnew EventArgs());       }       void OnStart(Object^ sender, EventArgs^ args)       {          Console::WriteLine("Starting");       }       void OnExit(Object^ sender, EventArgs^ args)       {           Console::WriteLine("Exiting");       } }; void f(Events^ e) {    e->RaiseStartEvent();    Console::WriteLine("Doing something.");    e->RaiseExitEvent(); } int main() {     Events^ events = gcnew Events();     // add the event handlers for Start and Exit     events->Start += gcnew EventHandler(events, &Events::OnStart);     events->Exit += gcnew EventHandler(events, &Events::OnExit);     f(events);     // remove the event handlers     events->Start -= gcnew EventHandler(events, &Events::OnStart);     events->Exit -= gcnew EventHandler(events, &Events::OnExit); }