ईवेंट किसी वर्ग या वस्तु को किसी रुचिकर घटना के होने पर अन्य वर्गों या वस्तुओं को सूचित करने में सक्षम बनाते हैं।
ईवेंट को उठाने वाले वर्ग को प्रकाशक कहा जाता है और ईवेंट को संभालने वाले वर्ग को सब्सक्राइबर कहा जाता है।
इवेंट में
एक ईवेंट में कई ग्राहक हो सकते हैं। एक ग्राहक एक से अधिक प्रकाशकों के कई ईवेंट को हैंडल कर सकता है।
ऐसे इवेंट जिनके सब्सक्राइबर नहीं होते हैं, उन्हें कभी नहीं उठाया जाता है।
प्रकाशक यह निर्धारित करता है कि कोई ईवेंट कब उठाया जाए; ग्राहक निर्धारित करते हैं कि घटना के जवाब में क्या कार्रवाई की जाती है।
उदाहरण
class Program { static void Main() { var video = new MP4() { Title = "Eminem" }; var videoEncoder = new MP4EncoderNew(); var mailService = new MailService(); var messageService = new MessageService(); videoEncoder.mp4Encoded += mailService.onVideoEncoded; videoEncoder.mp4Encoded += messageService.onVideoEncoded; videoEncoder.Encode(video); Console.ReadKey(); } } public class MP4 { public string Title { get; set; } } public class MP4Args : EventArgs { public MP4 mp4 { get; set; } } public class MP4EncoderNew { public EventHandler mp4Encoded; public void Encode(MP4 video) { Console.WriteLine("Encoding MP4"); Thread.Sleep(3000); OnVideoEncoded(video); } protected void OnVideoEncoded(MP4 video) { if (mp4Encoded != null) { mp4Encoded(this, new MP4Args() { mp4 = video }); } } } //Subscriber 1 public class MailService { public void onVideoEncoded(object source, MP4Args e) { Console.WriteLine("Mail Service:,Sending an email {0}", e.mp4.Title); } } //Subscriber 2 public class MessageService { public void onVideoEncoded(object source, MP4Args e) { Console.WriteLine("Message Service:,Sending an Message {0}", e.mp4.Title); } }
आउटपुट
Encoding MP4 Mail Service:,Sending an email Eminem Message Service:,Sending an Message Eminem