همانطور که قبلا گفتیم، عملیات اطلاع رسانی یا سیگنالیگ یک Event (رخداد) شامل یک دلیگیت (Delegate) میشود و دلیگیت، در بردارنده ی اشاره گر هایی به توابعی است که بایستی در هنگام رخ دادن Event فراخوانی شوند. اکثر Event هایی که ما به آنها سرو کار داریم مربوط به کنترل های برنامه مانند دکمه ها، منو ها و تکست باکس ها و ... مربوط می شوند و هنگامی رخ می دهند که کاربر با انها تعاملی داشته باشد؛ اما  Event ها را  همچنین میتوان در کد های برنامه ایجاد و راه اندازی کرد.
یک Event عضوی از یک کلاس ارجاع (Reference) است که به وسلیه ی کلمه Event و نام کلاس دلیگیت، تعریف می شود. در زیر نمونه ی ساده ای از تعریف Event را مشاهده می کنید.

public delegate void HANDLER();


// Class with an event member
public ref class EventClass
{
public:
// declaring the event
event HANDLER^ EVENT;

// Function to trigger event
void TriggerEvent()
{
   EVENT();
}
};

   

کلاس EventClass دارای یک Event وهله ای (instance) به نام EVENT است که با استفاده از دلیگیت HANDLER تعریف شده است و با آن در ارتباط است. و تابع عمومی TriggerEnevt مسئول راه اندازی این Event و در این مثال، بدون پارامتر است. هنگامی که EVENT راه اندازی می شود، میتواند توابعی که در لیست دلیگیت هستند را فراخوانی کند و همچنین نوع خروجی تعریف شده آن را داشته باشد. همینطور که می بینید راه اندازی Event مشابه فراخوانی دلیگیت است. برای جواب دادن به این Event میتوان کلاسی مشابه زیر ایجاد کرد :


public ref class AnswerClass

{
public:
void answer()
{
   Console::WriteLine("Event triggered");
}
};

کلاس AnswerClass دارای یک تابع عمومی به نام answer است که می تواند برای جواب دادن به Event به کار رود به این خاطر که دارای پارمتر ها و نوع بازگشتی یکسان با دلیگیت تعریف شده ما است.(در این مثال برای سهولت، هر دو بدون پارامتر و نوع بازگشتی هستند). 

به کار گیری Event :
قبل از اینکه بتوانیم از این تابع استافده کنیم باید یک شی از کلاس EventClass ایجاد کنیم. خط اول کد زیر این کار را انجام می دهد. بعد از اینکار میتوانیم این تابع را برای مدیریت Event خود ثبت کنیم.


EventClass^ obj = gcnew EventClass;

AnswerClass^ answer = gcnew AnswerClass;
obj -> EVENT += gcnew HANDLER(answer, & AnswerClass::answer);
obj ->TriggerEvent();

خط دوم کد بالا یک شی از کلاس AnswerClass ایجاد می کند، چون تابع answer یک تابع وهله ای (غیر استاتیک) است و سپس در خط بعد نمونه ای (وهله ای) از دلیگیت HANDLER را به همراه تابع مدیریت کننده خود را به Event تعریف شده در کلاس EventClass اضافه می کنیم؛ به عبارت دیگر تابع answer را برای Event خود ثبت می کنیم. در خط بعد با استفاده از تابع TriggerEvent آن را راه اندازی می کنیم. با فراخوانی این تابع، EVENT راه اندازی می شود و نتیجه ی آن، فراخوانی تابع answer است و در نتیجه عبارت "Event triggerd" در خروجی چاپ می شود.

منبع : Ivor Horton's beginnig visual C++ 2010