رویداد ها ، به یک کلاس یا شیئ این امکان را می دهند که درصورت اتفاق چیزی دلخواه ، کلاس ها یا اشیاء دیگر را مطلع کنند. به کلاسی که رویداد را می فرستد (یا برپا می کند) ، ناشر (publisher) می گویند و به کلاس هایی که رویداد را دریافت (مدیریت/handle) می کنند، متعهد (subscriber/اشتراک گیرنده) می گویند.
در یک برنامه ویندوزی یا تحت وب نمونه که با #C نوشته شده است، شما توسط کنترل هایی مثل button و یا listbox متعهد رویدادهای برپاشده می شوید. شما می توانید با استفاده از IDE (محیط توسعه جامع) Visual C# تمام رویدادهایی که یک کنترل منتشر می کند را ببینید و هر کدام از آنها را که خواستید ، برای مدیریت (handle) انتخاب کنید. IDE بطورت خودکار یک متد خالی مدیریت کننده رویداد و کد تعهد به رویداد را اضافه می کند. برای اطلاعات بیشتر به "راهنمای چگونگی اشتراک گیری و لغو اشتراک از رویدادها" مراجعه کنید.
بررسی رویدادها
رویدادها دارای خواص زیر می باشند:
- ناشر تصمیم می گیرد که چه موقع یک رویداد را برپا کند؛ متعهد ها تصمیم می گیرند که چه عملی در پاسخ رویداد انجام شود.
- یک رویداد می تواند دارای چندین متعهد باشد. یک متعهد می تواند چنیدین رویداد را از چندین ناشر، مدیریت کند.
- رویدادهایی که هیچ متعهدی ندارند، هرگز برپا نخواهند شد.
- برای نمونه رویدادها در رابط های گرافیکی کاربر، برای آشکار کردن اعمالی که کاربر انجام می دهد (کلیک کردن روی یک دکمه یا انتخاب یکی از گزینه های لیست و...) مورد استفاده قرار می گیرند.
- وقتی یک رویداد دارای چندین متعهد باشد، مدیریت کننده (handler) های رویداد بصورت همزمان در زمان برپایی رویداد، احضار می شوند.
- از رویدادها می توان برای همزمان سازی thread (نخ) ها استفاده کرد.
- در کتابخانه کلاس دات نت فریم وورک، رویدادها بر پایه وکیل EventHandler و کلاس پایه ای EventArgs استوارند.