{"id":76128,"date":"2024-09-08T19:55:40","date_gmt":"2024-09-08T16:25:40","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/event-handling-in-c-3m88\/"},"modified":"2024-09-08T19:55:40","modified_gmt":"2024-09-08T16:25:40","slug":"event-handling-in-c-3m88","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/event-handling-in-c-3m88\/","title":{"rendered":"\u0645\u062f\u06cc\u0631\u06cc\u062a \u0631\u0648\u06cc\u062f\u0627\u062f \u062f\u0631 \u0633\u06cc \u0634\u0627\u0631\u067e"},"content":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u062f\u0631 \u0633\u06cc \u0634\u0627\u0631\u067e \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u06cc\u06a9 \u0648\u06cc\u0698\u06af\u06cc \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0628\u0647 \u0627\u0634\u06cc\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u0628\u0627 \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u06a9\u0646\u0646\u062f. \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0627\u0644\u06af\u0648\u06cc \u0646\u0627\u0638\u0631\u060c \u062c\u0627\u06cc\u06cc \u06a9\u0647 \u06cc\u06a9 \u0634\u06cc (\u0645\u0648\u0636\u0648\u0639) \u0628\u0647 \u0627\u0634\u06cc\u0627\u0621 \u062f\u06cc\u06af\u0631 (\u0646\u0627\u0638\u0631\u0627\u0646) \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0645\u0648\u0631\u062f \u0639\u0644\u0627\u0642\u0647 \u0631\u062e \u0645\u06cc \u062f\u0647\u062f \u0627\u0637\u0644\u0627\u0639 \u0645\u06cc \u062f\u0647\u062f. \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u062f\u0631 \u0633\u06cc \u0634\u0627\u0631\u067e \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u0627\u0646\u060c \u06a9\u0647 \u0627\u0646\u0648\u0627\u0639\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0627\u0631\u062c\u0627\u0639 \u0628\u0647 \u0631\u0648\u0634 \u0647\u0627\u06cc\u06cc \u0631\u0627 \u0628\u0627 \u0627\u0645\u0636\u0627\u06cc \u062e\u0627\u0635 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u0646\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 \u062a\u0641\u06a9\u06cc\u06a9 \u0639\u0645\u06cc\u0642 \u0627\u0632 \u062a\u0645\u0627\u0645 \u0631\u0627\u0647 \u0647\u0627\u06cc \u0645\u0645\u06a9\u0646 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u062f\u0631 \u0633\u06cc \u0634\u0627\u0631\u067e\u060c \u0627\u0632 \u062c\u0645\u0644\u0647 \u0646\u0645\u0648\u0646\u0647 \u0647\u0627\u06cc\u06cc \u0628\u0627 \u0627\u0642\u062f\u0627\u0645\u060c \u062a\u0627\u0628\u0639\u060c \u0648 \u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u0627\u0646 \u0633\u0641\u0627\u0631\u0634\u06cc.<\/p>\n<p>  1. \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 EventHandler Delegate<\/p>\n<p>\u0631\u0627\u06cc\u062c \u062a\u0631\u06cc\u0646 \u0631\u0627\u0647 \u0628\u0631\u0627\u06cc \u0627\u0639\u0644\u0627\u0645 \u06cc\u06a9 \u0631\u0648\u06cc\u062f\u0627\u062f \u062f\u0631 \u0633\u06cc \u0634\u0627\u0631\u067e \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0639\u0628\u0627\u0631\u062a \u0627\u0633\u062a EventHandler \u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u06cc \u06cc\u0627 EventHandler&lt;TEventArgs&gt;\u060c \u06a9\u0647 \u0628\u0647 \u062f\u0646\u0628\u0627\u0644 \u06cc\u06a9 \u0627\u0645\u0636\u0627\u06cc \u062e\u0627\u0635 \u0627\u0633\u062a.<\/p>\n<p>  \u0645\u062b\u0627\u0644:<\/p>\n<p>public class EventPublisher<br \/>\n{<br \/>\n    \/\/ Event based on the built-in EventHandler delegate<br \/>\n    public event EventHandler EventOccured;<\/p>\n<p>    public void TriggerEvent()<br \/>\n    {<br \/>\n        \/\/ Check if there are any subscribers<br \/>\n        EventOccured?.Invoke(this, EventArgs.Empty);<br \/>\n    }<br \/>\n}<\/p>\n<p>public class EventSubscriber<br \/>\n{<br \/>\n    public void OnEventOccured(object sender, EventArgs e)<br \/>\n    {<br \/>\n        Console.WriteLine(&#8220;Event has occurred!&#8221;);<br \/>\n    }<br \/>\n}<\/p>\n<p>class Program<br \/>\n{<br \/>\n    static void Main(string[] args)<br \/>\n    {<br \/>\n        EventPublisher publisher = new EventPublisher();<br \/>\n        EventSubscriber subscriber = new EventSubscriber();<\/p>\n<p>        \/\/ Subscribe to the event<br \/>\n        publisher.EventOccured += subscriber.OnEventOccured;<\/p>\n<p>        \/\/ Trigger the event<br \/>\n        publisher.TriggerEvent();<br \/>\n    }<br \/>\n}<\/p>\n<p>\u0627\u06cc\u0646\u062c\u0627\u060c EventHandler \u06cc\u06a9 \u0646\u0645\u0627\u06cc\u0646\u062f\u0647 \u0627\u0632 \u067e\u06cc\u0634 \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u0628\u0627 \u0627\u0645\u0636\u0627\u06cc\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062f\u0648 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062f\u0627\u0631\u062f: \u0641\u0631\u0633\u062a\u0646\u062f\u0647 (\u0627\u0632 \u0646\u0648\u0639 object) \u0648 \u06cc\u06a9 EventArgs (\u06cc\u0627 \u0646\u0648\u0639 \u0645\u0634\u062a\u0642 \u0634\u062f\u0647).<\/p>\n<p>  2. \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 EventHandler \u0628\u0627 \u0633\u0641\u0627\u0631\u0634\u06cc EventArgs<\/p>\n<p>\u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u0633\u0641\u0627\u0631\u0634\u06cc \u0645\u0634\u062a\u0642 \u0634\u062f\u0647 \u0627\u0632 \u0622\u0646 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f EventArgs \u0628\u0631\u0627\u06cc \u0627\u0646\u062a\u0642\u0627\u0644 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u06cc\u0634\u062a\u0631 \u0647\u0646\u06af\u0627\u0645 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f.<\/p>\n<p>  \u0645\u062b\u0627\u0644:<\/p>\n<p>public class CustomEventArgs : EventArgs<br \/>\n{<br \/>\n    public string Message { get; }<\/p>\n<p>    public CustomEventArgs(string message)<br \/>\n    {<br \/>\n        Message = message;<br \/>\n    }<br \/>\n}<\/p>\n<p>public class EventPublisher<br \/>\n{<br \/>\n    public event EventHandler&lt;CustomEventArgs&gt; EventOccured;<\/p>\n<p>    public void TriggerEvent(string message)<br \/>\n    {<br \/>\n        EventOccured?.Invoke(this, new CustomEventArgs(message));<br \/>\n    }<br \/>\n}<\/p>\n<p>public class EventSubscriber<br \/>\n{<br \/>\n    public void OnEventOccured(object sender, CustomEventArgs e)<br \/>\n    {<br \/>\n        Console.WriteLine($&#8221;Event message: {e.Message}&#8221;);<br \/>\n    }<br \/>\n}<\/p>\n<p>class Program<br \/>\n{<br \/>\n    static void Main(string[] args)<br \/>\n    {<br \/>\n        EventPublisher publisher = new EventPublisher();<br \/>\n        EventSubscriber subscriber = new EventSubscriber();<\/p>\n<p>        publisher.EventOccured += subscriber.OnEventOccured;<br \/>\n        publisher.TriggerEvent(&#8220;Hello from the event!&#8221;);<br \/>\n    }<br \/>\n}<\/p>\n<p>\u0627\u06cc\u0646\u062c\u0627\u060c CustomEventArgs \u062d\u0627\u0648\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc (Message) \u0628\u0647 \u06af\u0631\u062f\u0627\u0646\u0646\u062f\u06af\u0627\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f \u0645\u0646\u062a\u0642\u0644 \u0634\u062f.<\/p>\n<p>  3. \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc<\/p>\n<p>\u0628\u0647 \u062c\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0632 \u067e\u06cc\u0634 \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 EventHandler\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0646\u0645\u0627\u06cc\u0646\u062f\u0647 \u062e\u0648\u062f \u0631\u0627 \u0628\u0631\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641 \u06cc\u06a9 \u0627\u0645\u0636\u0627\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f \u0633\u0641\u0627\u0631\u0634\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<p>  \u0645\u062b\u0627\u0644:<\/p>\n<p>public delegate void CustomEventDelegate(string message);<\/p>\n<p>public class EventPublisher<br \/>\n{<br \/>\n    public event CustomEventDelegate EventOccured;<\/p>\n<p>    public void TriggerEvent(string message)<br \/>\n    {<br \/>\n        EventOccured?.Invoke(message);<br \/>\n    }<br \/>\n}<\/p>\n<p>public class EventSubscriber<br \/>\n{<br \/>\n    public void OnEventOccured(string message)<br \/>\n    {<br \/>\n        Console.WriteLine($&#8221;Event message: {message}&#8221;);<br \/>\n    }<br \/>\n}<\/p>\n<p>class Program<br \/>\n{<br \/>\n    static void Main(string[] args)<br \/>\n    {<br \/>\n        EventPublisher publisher = new EventPublisher();<br \/>\n        EventSubscriber subscriber = new EventSubscriber();<\/p>\n<p>        publisher.EventOccured += subscriber.OnEventOccured;<br \/>\n        publisher.TriggerEvent(&#8220;Hello from the custom delegate event!&#8221;);<br \/>\n    }<br \/>\n}<\/p>\n<p>  4. \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Action Delegate<\/p>\n<p>\u0631\u0627 Action delegate \u0628\u062e\u0634\u06cc \u0627\u0632 \u0686\u0627\u0631\u0686\u0648\u0628 \u062f\u0627\u062a \u0646\u062a \u0627\u0633\u062a \u0648 \u0631\u0648\u0634\u06cc \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0627\u0631\u0632\u0634 \u0628\u0627\u0632\u06af\u0634\u062a\u06cc \u0646\u062f\u0627\u0631\u062f. \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0628\u06af\u06cc\u0631\u062f \u06a9\u0647 \u0622\u0646 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0645\u0646\u0627\u0633\u0628 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>  \u0645\u062b\u0627\u0644:<\/p>\n<p>public class EventPublisher<br \/>\n{<br \/>\n    public event Action&lt;string&gt; EventOccured;<\/p>\n<p>    public void TriggerEvent(string message)<br \/>\n    {<br \/>\n        EventOccured?.Invoke(message);<br \/>\n    }<br \/>\n}<\/p>\n<p>public class EventSubscriber<br \/>\n{<br \/>\n    public void OnEventOccured(string message)<br \/>\n    {<br \/>\n        Console.WriteLine($&#8221;Action Event message: {message}&#8221;);<br \/>\n    }<br \/>\n}<\/p>\n<p>class Program<br \/>\n{<br \/>\n    static void Main(string[] args)<br \/>\n    {<br \/>\n        EventPublisher publisher = new EventPublisher();<br \/>\n        EventSubscriber subscriber = new EventSubscriber();<\/p>\n<p>        publisher.EventOccured += subscriber.OnEventOccured;<br \/>\n        publisher.TriggerEvent(&#8220;Hello from Action-based event!&#8221;);<br \/>\n    }<br \/>\n}<\/p>\n<p>\u0627\u06cc\u0646\u062c\u0627\u060c Action&lt;string&gt; delegate \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f \u06a9\u0647 \u06cc\u06a9 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0631\u0627 \u0645\u06cc \u06af\u06cc\u0631\u062f \u0648 \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u0627\u0646\u062f void.<\/p>\n<p>  5. \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Func Delegate<\/p>\n<p>\u0631\u0627 Func delegate \u0631\u0648\u0634\u06cc \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631\u06cc \u0631\u0627 \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u0627\u0646\u062f. \u0627\u06af\u0631\u0686\u0647 \u06a9\u0645\u062a\u0631 \u0627\u062a\u0641\u0627\u0642 \u0645\u06cc \u0627\u0641\u062a\u062f \u06a9\u0647 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0631\u0627 \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u0646\u062f (\u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0634\u0646\u0648\u0646\u062f\u06af\u0627\u0646 \u0631\u0627 \u0645\u0637\u0644\u0639 \u0645\u06cc \u06a9\u0646\u0646\u062f\u060c \u0646\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0627\u0632\u062e\u0648\u0631\u062f)\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 Func \u0628\u0631\u0627\u06cc \u0637\u0631\u0627\u062d\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f\u06cc \u06a9\u0647 \u0627\u0646\u062a\u0638\u0627\u0631 \u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631 \u0628\u0627\u0632\u06af\u0634\u062a\u06cc \u0631\u0627 \u062f\u0627\u0631\u062f.<\/p>\n<p>  \u0645\u062b\u0627\u0644:<\/p>\n<p>public class EventPublisher<br \/>\n{<br \/>\n    public event Func&lt;string, bool&gt; EventOccured;<\/p>\n<p>    public void TriggerEvent(string message)<br \/>\n    {<br \/>\n        bool result = EventOccured?.Invoke(message) ?? false;<br \/>\n        Console.WriteLine($&#8221;Event result: {result}&#8221;);<br \/>\n    }<br \/>\n}<\/p>\n<p>public class EventSubscriber<br \/>\n{<br \/>\n    public bool OnEventOccured(string message)<br \/>\n    {<br \/>\n        Console.WriteLine($&#8221;Func Event message: {message}&#8221;);<br \/>\n        return message.Contains(&#8220;success&#8221;);<br \/>\n    }<br \/>\n}<\/p>\n<p>class Program<br \/>\n    {<br \/>\n    static void Main(string[] args)<br \/>\n    {<br \/>\n        EventPublisher publisher = new EventPublisher();<br \/>\n        EventSubscriber subscriber = new EventSubscriber();<\/p>\n<p>        publisher.EventOccured += subscriber.OnEventOccured;<br \/>\n        publisher.TriggerEvent(&#8220;Hello with success!&#8221;);<br \/>\n    }<br \/>\n}<\/p>\n<p>\u0627\u06cc\u0646\u062c\u0627\u060c Func&lt;string, bool&gt; \u0631\u0648\u06cc\u062f\u0627\u062f\u06cc \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 a \u0631\u0627 \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u0627\u0646\u062f bool \u0628\u0631 \u0627\u0633\u0627\u0633 \u067e\u06cc\u0627\u0645 \u0627\u0631\u0633\u0627\u0644 \u0634\u062f\u0647<\/p>\n<p>  6. \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0646\u0627\u0634\u0646\u0627\u0633 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0631\u0648\u06cc\u062f\u0627\u062f<\/p>\n<p>\u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0646\u0627\u0634\u0646\u0627\u0633 \u06cc\u0627 \u0639\u0628\u0627\u0631\u0627\u062a \u0644\u0627\u0645\u0628\u062f\u0627 \u062f\u0631 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0645\u0634\u062a\u0631\u06a9 \u0634\u0648\u06cc\u062f.<\/p>\n<p>  \u0645\u062b\u0627\u0644:<\/p>\n<p>public class EventPublisher<br \/>\n{<br \/>\n    public event EventHandler EventOccured;<\/p>\n<p>    public void TriggerEvent()<br \/>\n    {<br \/>\n        EventOccured?.Invoke(this, EventArgs.Empty);<br \/>\n    }<br \/>\n}<\/p>\n<p>class Program<br \/>\n{<br \/>\n    static void Main(string[] args)<br \/>\n    {<br \/>\n        EventPublisher publisher = new EventPublisher();<\/p>\n<p>        \/\/ Subscribe with an anonymous method<br \/>\n        publisher.EventOccured += delegate (object sender, EventArgs e)<br \/>\n        {<br \/>\n            Console.WriteLine(&#8220;Event handled using anonymous method&#8221;);<br \/>\n        };<\/p>\n<p>        \/\/ Subscribe with a lambda expression<br \/>\n        publisher.EventOccured += (sender, e) =&gt;<br \/>\n        {<br \/>\n            Console.WriteLine(&#8220;Event handled using lambda expression&#8221;);<br \/>\n        };<\/p>\n<p>        publisher.TriggerEvent();<br \/>\n    }<br \/>\n}<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f\u060c \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 \u0631\u0648\u06cc\u062f\u0627\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0631\u0648\u0634 \u0647\u0627\u06cc \u0646\u0627\u0634\u0646\u0627\u0633 \u06cc\u0627 \u0639\u0628\u0627\u0631\u0627\u062a \u0644\u0627\u0645\u0628\u062f\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0631\u0648\u0646 \u062e\u0637\u06cc \u0645\u0634\u062e\u0635 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<p>  7. \u0645\u062f\u06cc\u0631\u06cc\u062a \u0635\u0631\u06cc\u062d \u0631\u0648\u06cc\u062f\u0627\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0631\u0627\u0628\u0637<\/p>\n<p>\u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0635\u0631\u0627\u062d\u062a \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0628\u062e\u0634\u06cc \u0627\u0632 \u06cc\u06a9 \u0631\u0627\u0628\u0637 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f\u060c \u0648 \u06a9\u0644\u0627\u0633 \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u0631\u0627\u0628\u0637 \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u0646\u062f \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a \u0631\u0648\u06cc\u062f\u0627\u062f \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f.<\/p>\n<p>  \u0645\u062b\u0627\u0644:<\/p>\n<p>public interface IEventPublisher<br \/>\n{<br \/>\n    event EventHandler EventOccured;<br \/>\n}<\/p>\n<p>public class EventPublisher : IEventPublisher<br \/>\n{<br \/>\n    public event EventHandler EventOccured;<\/p>\n<p>    public void TriggerEvent()<br \/>\n    {<br \/>\n        EventOccured?.Invoke(this, EventArgs.Empty);<br \/>\n    }<br \/>\n}<\/p>\n<p>public class EventSubscriber<br \/>\n{<br \/>\n    public void OnEventOccured(object sender, EventArgs e)<br \/>\n    {<br \/>\n        Console.WriteLine(&#8220;Event handled from interface&#8221;);<br \/>\n    }<br \/>\n}<\/p>\n<p>class Program<br \/>\n{<br \/>\n    static void Main(string[] args)<br \/>\n    {<br \/>\n        EventPublisher publisher = new EventPublisher();<br \/>\n        EventSubscriber subscriber = new EventSubscriber();<\/p>\n<p>        IEventPublisher iPublisher = publisher;<br \/>\n        iPublisher.EventOccured += subscriber.OnEventOccured;<\/p>\n<p>        publisher.TriggerEvent();<br \/>\n    }<br \/>\n}<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644\u060c IEventPublisher \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 \u0631\u0648\u06cc\u062f\u0627\u062f \u0648 \u06a9\u0644\u0627\u0633\u200c\u0647\u0627\u06cc \u0645\u0634\u0627\u0628\u0647 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f EventPublisher \u0628\u0627\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u062f.<\/p>\n<p>  8. \u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u0627\u0646 \u0686\u0646\u062f \u0628\u0627\u0632\u06cc\u06af\u0631\u06cc \u0648 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627<\/p>\n<p>\u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc \u0633\u06cc \u0634\u0627\u0631\u067e \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0686\u0646\u062f \u067e\u062e\u0634\u06cc \u0628\u0627\u0634\u0646\u062f\u060c \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u06a9\u0647 \u0686\u0646\u062f\u06cc\u0646 \u0631\u0648\u0634 \u0631\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u062f\u0631 \u067e\u0627\u0633\u062e \u0628\u0647 \u06cc\u06a9 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632 \u0631\u0648\u06cc\u062f\u0627\u062f \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u06a9\u0631\u062f.<\/p>\n<p>  \u0645\u062b\u0627\u0644:<\/p>\n<p>public class EventPublisher<br \/>\n{<br \/>\n    public event Action&lt;string&gt; EventOccured;<\/p>\n<p>    public void TriggerEvent(string message)<br \/>\n    {<br \/>\n        EventOccured?.Invoke(message);<br \/>\n    }<br \/>\n}<\/p>\n<p>public class EventSubscriber<br \/>\n{<br \/>\n    public void FirstHandler(string message)<br \/>\n    {<br \/>\n        Console.WriteLine($&#8221;First handler: {message}&#8221;);<br \/>\n    }<\/p>\n<p>    public void SecondHandler(string message)<br \/>\n    {<br \/>\n        Console.WriteLine($&#8221;Second handler: {message}&#8221;);<br \/>\n    }<br \/>\n}<\/p>\n<p>class Program<br \/>\n{<br \/>\n    static void Main(string[] args)<br \/>\n    {<br \/>\n        EventPublisher publisher = new EventPublisher();<br \/>\n        EventSubscriber subscriber = new EventSubscriber();<\/p>\n<p>        publisher.EventOccured += subscriber.FirstHandler;<br \/>\n        publisher.EventOccured += subscriber.SecondHandler;<\/p>\n<p>        publisher.TriggerEvent(&#8220;Hello to multiple handlers!&#8221;);<br \/>\n    }<br \/>\n}<\/p>\n<p>\u0627\u06cc\u0646\u062c\u0627\u060c \u0647\u0631 \u062f\u0648 FirstHandler \u0648 SecondHandler \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0631\u0648\u06cc\u062f\u0627\u062f \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u06cc \u0634\u0648\u062f\u060c \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0645\u06cc \u0634\u0648\u0646\u062f.<\/p>\n<p>\u0627\u06cc\u0646\u0647\u0627 \u0631\u0627\u06cc\u062c \u062a\u0631\u06cc\u0646 \u0631\u0627\u0647 \u0647\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u062f\u0631 \u0633\u06cc \u0634\u0627\u0631\u067e \u0647\u0633\u062a\u0646\u062f. \u0627\u06cc\u0646 \u06a9\u0647 \u0622\u06cc\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u0627\u0646 \u062f\u0627\u062e\u0644\u06cc \u0645\u0627\u0646\u0646\u062f Action\u060c Func\u060c \u06cc\u0627 EventHandler\u060c \u06cc\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u0648\u0627\u0631\u062f \u0633\u0641\u0627\u0631\u0634\u06cc\u060c \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u0646\u062f \u0633\u06cc\u0633\u062a\u0645 \u0647\u0627\u06cc \u0642\u0648\u06cc \u0648 \u062c\u062f\u0627 \u0634\u062f\u0647 \u0628\u0633\u0627\u0632\u06cc\u062f.<\/p>\n<p>\u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f \u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u0646\u0647\u0627\u06cc\u06cc \u062e\u0644\u0627\u0635\u0647 \u06a9\u0646\u06cc\u0645<\/p>\n<p>using System;<\/p>\n<p>public class EventExamples<br \/>\n{<br \/>\n    \/\/ 1. Traditional event declaration with custom EventArgs<br \/>\n    public class CustomEventArgs : EventArgs<br \/>\n    {<br \/>\n        public string Message { get; set; }<br \/>\n    }<br \/>\n    public event EventHandler&lt;CustomEventArgs&gt; TraditionalEvent;<\/p>\n<p>    \/\/ 2. Event using Action delegate<br \/>\n    public event Action SimpleEvent;<\/p>\n<p>    \/\/ 3. Event using Action&lt;T&gt; delegate<br \/>\n    public event Action&lt;string&gt; ParameterizedEvent;<\/p>\n<p>    \/\/ 4. Event using Func&lt;T, TResult&gt; delegate<br \/>\n    public event Func&lt;string, bool&gt; FuncEvent;<\/p>\n<p>    \/\/ 5. Custom delegate event<br \/>\n    public delegate void CustomDelegate(string message, int number);<br \/>\n    public event CustomDelegate CustomEvent;<\/p>\n<p>    \/\/ 6. Event with multiple parameters using Action<br \/>\n    public event Action&lt;string, int, bool&gt; MultiParamEvent;<\/p>\n<p>    \/\/ Methods to raise the events<br \/>\n    public void RaiseTraditionalEvent(string message)<br \/>\n    {<br \/>\n        TraditionalEvent?.Invoke(this, new CustomEventArgs { Message = message });<br \/>\n    }<\/p>\n<p>    public void RaiseSimpleEvent()<br \/>\n    {<br \/>\n        SimpleEvent?.Invoke();<br \/>\n    }<\/p>\n<p>    public void RaiseParameterizedEvent(string message)<br \/>\n    {<br \/>\n        ParameterizedEvent?.Invoke(message);<br \/>\n    }<\/p>\n<p>    public bool RaiseFuncEvent(string input)<br \/>\n    {<br \/>\n        return FuncEvent?.Invoke(input) ?? false;<br \/>\n    }<\/p>\n<p>    public void RaiseCustomEvent(string message, int number)<br \/>\n    {<br \/>\n        CustomEvent?.Invoke(message, number);<br \/>\n    }<\/p>\n<p>    public void RaiseMultiParamEvent(string message, int number, bool flag)<br \/>\n    {<br \/>\n        MultiParamEvent?.Invoke(message, number, flag);<br \/>\n    }<br \/>\n}<\/p>\n<p>\/\/ Usage example<br \/>\nclass Program<br \/>\n{<br \/>\n    static void Main()<br \/>\n    {<br \/>\n        var examples = new EventExamples();<\/p>\n<p>        \/\/ Subscribe to events<br \/>\n        examples.TraditionalEvent += (sender, e) =&gt; Console.WriteLine($&#8221;Traditional event: {e.Message}&#8221;);<br \/>\n        examples.SimpleEvent += () =&gt; Console.WriteLine(&#8220;Simple event fired&#8221;);<br \/>\n        examples.ParameterizedEvent += message =&gt; Console.WriteLine($&#8221;Parameterized event: {message}&#8221;);<br \/>\n        examples.FuncEvent += input =&gt; { Console.WriteLine($&#8221;Func event: {input}&#8221;); return true; };<br \/>\n        examples.CustomEvent += (message, number) =&gt; Console.WriteLine($&#8221;Custom event: {message}, {number}&#8221;);<br \/>\n        examples.MultiParamEvent += (message, number, flag) =&gt; Console.WriteLine($&#8221;Multi-param event: {message}, {number}, {flag}&#8221;);<\/p>\n<p>        \/\/ Raise events<br \/>\n        examples.RaiseTraditionalEvent(&#8220;Hello, World!&#8221;);<br \/>\n        examples.RaiseSimpleEvent();<br \/>\n        examples.RaiseParameterizedEvent(&#8220;Event with parameter&#8221;);<br \/>\n        bool result = examples.RaiseFuncEvent(&#8220;Func event input&#8221;);<br \/>\n        examples.RaiseCustomEvent(&#8220;Custom message&#8221;, 42);<br \/>\n        examples.RaiseMultiParamEvent(&#8220;Multi-param&#8221;, 100, true);<br \/>\n    }<br \/>\n}<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u062a\u0648\u0636\u06cc\u062d \u0645\u062e\u062a\u0635\u0631\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0647\u0631 \u0631\u0648\u0634 \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<p>\u0631\u0648\u06cc\u062f\u0627\u062f \u0633\u0646\u062a\u06cc: \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 EventHandler&lt;T&gt; \u0628\u0627 \u0633\u0641\u0627\u0631\u0634\u06cc EventArgs.<br \/>\n\u0631\u0648\u06cc\u062f\u0627\u062f \u0633\u0627\u062f\u0647: \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 Action \u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u06cc \u0628\u0631\u0627\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc \u0628\u062f\u0648\u0646 \u067e\u0627\u0631\u0627\u0645\u062a\u0631<br \/>\n\u0631\u0648\u06cc\u062f\u0627\u062f \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc \u0634\u062f\u0647: \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 Action&lt;T&gt; \u0628\u0631\u0627\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc\u06cc \u0628\u0627 \u06cc\u06a9 \u067e\u0627\u0631\u0627\u0645\u062a\u0631<br \/>\n\u0631\u0648\u06cc\u062f\u0627\u062f Func: \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 Func&lt;T, TResult&gt; \u0628\u0631\u0627\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631\u06cc \u0631\u0627 \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u0627\u0646\u062f.<br \/>\n\u0631\u0648\u06cc\u062f\u0627\u062f \u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc: \u06cc\u06a9 \u0646\u0645\u0627\u06cc\u0646\u062f\u0647 \u0633\u0641\u0627\u0631\u0634\u06cc \u0628\u0631\u0627\u06cc \u0627\u0645\u0636\u0627\u0647\u0627\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f \u067e\u06cc\u0686\u06cc\u062f\u0647 \u062a\u0631 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f.<br \/>\n\u0631\u0648\u06cc\u062f\u0627\u062f \u0686\u0646\u062f \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc: \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 Action&lt;T1, T2, T3&gt; \u0628\u0631\u0627\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc\u06cc \u0628\u0627 \u0686\u0646\u062f\u06cc\u0646 \u067e\u0627\u0631\u0627\u0645\u062a\u0631<\/p>\n<p>\u062f\u0631 \u0633\u06cc \u0634\u0627\u0631\u067e \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u06cc\u06a9 \u0648\u06cc\u0698\u06af\u06cc \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0628\u0647 \u0627\u0634\u06cc\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u0628\u0627 \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u06a9\u0646\u0646\u062f. \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 <strong>\u0627\u0644\u06af\u0648\u06cc \u0646\u0627\u0638\u0631<\/strong>\u060c \u062c\u0627\u06cc\u06cc \u06a9\u0647 \u06cc\u06a9 \u0634\u06cc (\u0645\u0648\u0636\u0648\u0639) \u0628\u0647 \u0627\u0634\u06cc\u0627\u0621 \u062f\u06cc\u06af\u0631 (\u0646\u0627\u0638\u0631\u0627\u0646) \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0645\u0648\u0631\u062f \u0639\u0644\u0627\u0642\u0647 \u0631\u062e \u0645\u06cc \u062f\u0647\u062f \u0627\u0637\u0644\u0627\u0639 \u0645\u06cc \u062f\u0647\u062f. \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u062f\u0631 \u0633\u06cc \u0634\u0627\u0631\u067e \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u06cc\u200c\u0634\u0648\u0646\u062f <strong>\u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u0627\u0646<\/strong>\u060c \u06a9\u0647 \u0627\u0646\u0648\u0627\u0639\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0627\u0631\u062c\u0627\u0639 \u0628\u0647 \u0631\u0648\u0634 \u0647\u0627\u06cc\u06cc \u0631\u0627 \u0628\u0627 \u0627\u0645\u0636\u0627\u06cc \u062e\u0627\u0635 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u0646\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 \u062a\u0641\u06a9\u06cc\u06a9 \u0639\u0645\u06cc\u0642 \u0627\u0632 \u062a\u0645\u0627\u0645 \u0631\u0627\u0647 \u0647\u0627\u06cc \u0645\u0645\u06a9\u0646 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u062f\u0631 \u0633\u06cc \u0634\u0627\u0631\u067e\u060c \u0627\u0632 \u062c\u0645\u0644\u0647 \u0646\u0645\u0648\u0646\u0647 \u0647\u0627\u06cc\u06cc \u0628\u0627 <strong>\u0627\u0642\u062f\u0627\u0645<\/strong>\u060c <strong>\u062a\u0627\u0628\u0639<\/strong>\u060c \u0648 \u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u0627\u0646 \u0633\u0641\u0627\u0631\u0634\u06cc.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/event-handling-in-c-3m88\/#1_%D8%A8%D8%A7_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_EventHandler_Delegate\" >1. \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 EventHandler Delegate<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/event-handling-in-c-3m88\/#%D9%85%D8%AB%D8%A7%D9%84\" >\u0645\u062b\u0627\u0644:<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/event-handling-in-c-3m88\/#2_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_EventHandler_%D8%A8%D8%A7_%D8%B3%D9%81%D8%A7%D8%B1%D8%B4%DB%8C_EventArgs\" >2. \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 EventHandler \u0628\u0627 \u0633\u0641\u0627\u0631\u0634\u06cc EventArgs<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/event-handling-in-c-3m88\/#%D9%85%D8%AB%D8%A7%D9%84-2\" >\u0645\u062b\u0627\u0644:<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/event-handling-in-c-3m88\/#3_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_%D9%86%D9%85%D8%A7%DB%8C%D9%86%D8%AF%DA%AF%DB%8C_%D8%B3%D9%81%D8%A7%D8%B1%D8%B4%DB%8C\" >3. \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/event-handling-in-c-3m88\/#%D9%85%D8%AB%D8%A7%D9%84-3\" >\u0645\u062b\u0627\u0644:<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/event-handling-in-c-3m88\/#4_%D8%A8%D8%A7_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_Action_Delegate\" >4. \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Action Delegate<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/event-handling-in-c-3m88\/#%D9%85%D8%AB%D8%A7%D9%84-4\" >\u0645\u062b\u0627\u0644:<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/event-handling-in-c-3m88\/#5_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_Func_Delegate\" >5. \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Func Delegate<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/event-handling-in-c-3m88\/#%D9%85%D8%AB%D8%A7%D9%84-5\" >\u0645\u062b\u0627\u0644:<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/nabfollower.com\/blog\/event-handling-in-c-3m88\/#6_%D8%B1%D9%88%D8%B4%E2%80%8C%D9%87%D8%A7%DB%8C_%D9%86%D8%A7%D8%B4%D9%86%D8%A7%D8%B3_%D8%A8%D8%B1%D8%A7%DB%8C_%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA_%D8%B1%D9%88%DB%8C%D8%AF%D8%A7%D8%AF\" >6. \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0646\u0627\u0634\u0646\u0627\u0633 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0631\u0648\u06cc\u062f\u0627\u062f<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/nabfollower.com\/blog\/event-handling-in-c-3m88\/#%D9%85%D8%AB%D8%A7%D9%84-6\" >\u0645\u062b\u0627\u0644:<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/nabfollower.com\/blog\/event-handling-in-c-3m88\/#7_%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA_%D8%B5%D8%B1%DB%8C%D8%AD_%D8%B1%D9%88%DB%8C%D8%AF%D8%A7%D8%AF_%D8%A8%D8%A7_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_%D8%B1%D8%A7%D8%A8%D8%B7\" >7. \u0645\u062f\u06cc\u0631\u06cc\u062a \u0635\u0631\u06cc\u062d \u0631\u0648\u06cc\u062f\u0627\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0631\u0627\u0628\u0637<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/nabfollower.com\/blog\/event-handling-in-c-3m88\/#%D9%85%D8%AB%D8%A7%D9%84-7\" >\u0645\u062b\u0627\u0644:<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/nabfollower.com\/blog\/event-handling-in-c-3m88\/#8_%D9%86%D9%85%D8%A7%DB%8C%D9%86%D8%AF%DA%AF%D8%A7%D9%86_%DA%86%D9%86%D8%AF_%D8%A8%D8%A7%D8%B2%DB%8C%DA%AF%D8%B1%DB%8C_%D9%88_%D8%B1%D9%88%DB%8C%D8%AF%D8%A7%D8%AF%D9%87%D8%A7\" >8. \u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u0627\u0646 \u0686\u0646\u062f \u0628\u0627\u0632\u06cc\u06af\u0631\u06cc \u0648 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/nabfollower.com\/blog\/event-handling-in-c-3m88\/#%D9%85%D8%AB%D8%A7%D9%84-8\" >\u0645\u062b\u0627\u0644:<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"1_%D8%A8%D8%A7_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_EventHandler_Delegate\"><\/span>\n<p>  1. <strong>\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 EventHandler Delegate<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0631\u0627\u06cc\u062c \u062a\u0631\u06cc\u0646 \u0631\u0627\u0647 \u0628\u0631\u0627\u06cc \u0627\u0639\u0644\u0627\u0645 \u06cc\u06a9 \u0631\u0648\u06cc\u062f\u0627\u062f \u062f\u0631 \u0633\u06cc \u0634\u0627\u0631\u067e \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0639\u0628\u0627\u0631\u062a \u0627\u0633\u062a <code>EventHandler<\/code> \u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u06cc \u06cc\u0627 <code>EventHandler&lt;TEventArgs&gt;<\/code>\u060c \u06a9\u0647 \u0628\u0647 \u062f\u0646\u0628\u0627\u0644 \u06cc\u06a9 \u0627\u0645\u0636\u0627\u06cc \u062e\u0627\u0635 \u0627\u0633\u062a.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"%D9%85%D8%AB%D8%A7%D9%84\"><\/span>\n<p>  \u0645\u062b\u0627\u0644:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">EventPublisher<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ Event based on the built-in EventHandler delegate<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">event<\/span> <span class=\"n\">EventHandler<\/span> <span class=\"n\">EventOccured<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">TriggerEvent<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"c1\">\/\/ Check if there are any subscribers<\/span>\n        <span class=\"n\">EventOccured<\/span><span class=\"p\">?.<\/span><span class=\"nf\">Invoke<\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">,<\/span> <span class=\"n\">EventArgs<\/span><span class=\"p\">.<\/span><span class=\"n\">Empty<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">EventSubscriber<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">OnEventOccured<\/span><span class=\"p\">(<\/span><span class=\"kt\">object<\/span> <span class=\"n\">sender<\/span><span class=\"p\">,<\/span> <span class=\"n\">EventArgs<\/span> <span class=\"n\">e<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">Console<\/span><span class=\"p\">.<\/span><span class=\"nf\">WriteLine<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Event has occurred!\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"k\">class<\/span> <span class=\"nc\">Program<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">static<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">Main<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span><span class=\"p\">[]<\/span> <span class=\"n\">args<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">EventPublisher<\/span> <span class=\"n\">publisher<\/span> <span class=\"p\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">EventPublisher<\/span><span class=\"p\">();<\/span>\n        <span class=\"n\">EventSubscriber<\/span> <span class=\"n\">subscriber<\/span> <span class=\"p\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">EventSubscriber<\/span><span class=\"p\">();<\/span>\n\n        <span class=\"c1\">\/\/ Subscribe to the event<\/span>\n        <span class=\"n\">publisher<\/span><span class=\"p\">.<\/span><span class=\"n\">EventOccured<\/span> <span class=\"p\">+=<\/span> <span class=\"n\">subscriber<\/span><span class=\"p\">.<\/span><span class=\"n\">OnEventOccured<\/span><span class=\"p\">;<\/span>\n\n        <span class=\"c1\">\/\/ Trigger the event<\/span>\n        <span class=\"n\">publisher<\/span><span class=\"p\">.<\/span><span class=\"nf\">TriggerEvent<\/span><span class=\"p\">();<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<\/code><\/pre>\n<\/div>\n<p>\u0627\u06cc\u0646\u062c\u0627\u060c <code>EventHandler<\/code> \u06cc\u06a9 \u0646\u0645\u0627\u06cc\u0646\u062f\u0647 \u0627\u0632 \u067e\u06cc\u0634 \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u0628\u0627 \u0627\u0645\u0636\u0627\u06cc\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062f\u0648 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062f\u0627\u0631\u062f: \u0641\u0631\u0633\u062a\u0646\u062f\u0647 (\u0627\u0632 \u0646\u0648\u0639 <code>object<\/code>) \u0648 \u06cc\u06a9 <code>EventArgs<\/code> (\u06cc\u0627 \u0646\u0648\u0639 \u0645\u0634\u062a\u0642 \u0634\u062f\u0647).<\/p>\n<h3><span class=\"ez-toc-section\" id=\"2_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_EventHandler_%D8%A8%D8%A7_%D8%B3%D9%81%D8%A7%D8%B1%D8%B4%DB%8C_EventArgs\"><\/span>\n<p>  2. <strong>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 EventHandler \u0628\u0627 \u0633\u0641\u0627\u0631\u0634\u06cc EventArgs<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u0633\u0641\u0627\u0631\u0634\u06cc \u0645\u0634\u062a\u0642 \u0634\u062f\u0647 \u0627\u0632 \u0622\u0646 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f <code>EventArgs<\/code> \u0628\u0631\u0627\u06cc \u0627\u0646\u062a\u0642\u0627\u0644 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u06cc\u0634\u062a\u0631 \u0647\u0646\u06af\u0627\u0645 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"%D9%85%D8%AB%D8%A7%D9%84-2\"><\/span>\n<p>  \u0645\u062b\u0627\u0644:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">CustomEventArgs<\/span> <span class=\"p\">:<\/span> <span class=\"n\">EventArgs<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"kt\">string<\/span> <span class=\"n\">Message<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"nf\">CustomEventArgs<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span> <span class=\"n\">message<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">Message<\/span> <span class=\"p\">=<\/span> <span class=\"n\">message<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">EventPublisher<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">event<\/span> <span class=\"n\">EventHandler<\/span><span class=\"p\">&lt;<\/span><span class=\"n\">CustomEventArgs<\/span><span class=\"p\">&gt;<\/span> <span class=\"n\">EventOccured<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">TriggerEvent<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span> <span class=\"n\">message<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">EventOccured<\/span><span class=\"p\">?.<\/span><span class=\"nf\">Invoke<\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">,<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">CustomEventArgs<\/span><span class=\"p\">(<\/span><span class=\"n\">message<\/span><span class=\"p\">));<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">EventSubscriber<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">OnEventOccured<\/span><span class=\"p\">(<\/span><span class=\"kt\">object<\/span> <span class=\"n\">sender<\/span><span class=\"p\">,<\/span> <span class=\"n\">CustomEventArgs<\/span> <span class=\"n\">e<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">Console<\/span><span class=\"p\">.<\/span><span class=\"nf\">WriteLine<\/span><span class=\"p\">(<\/span><span class=\"s\">$\"Event message: <\/span><span class=\"p\">{<\/span><span class=\"n\">e<\/span><span class=\"p\">.<\/span><span class=\"n\">Message<\/span><span class=\"p\">}<\/span><span class=\"s\">\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"k\">class<\/span> <span class=\"nc\">Program<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">static<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">Main<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span><span class=\"p\">[]<\/span> <span class=\"n\">args<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">EventPublisher<\/span> <span class=\"n\">publisher<\/span> <span class=\"p\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">EventPublisher<\/span><span class=\"p\">();<\/span>\n        <span class=\"n\">EventSubscriber<\/span> <span class=\"n\">subscriber<\/span> <span class=\"p\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">EventSubscriber<\/span><span class=\"p\">();<\/span>\n\n        <span class=\"n\">publisher<\/span><span class=\"p\">.<\/span><span class=\"n\">EventOccured<\/span> <span class=\"p\">+=<\/span> <span class=\"n\">subscriber<\/span><span class=\"p\">.<\/span><span class=\"n\">OnEventOccured<\/span><span class=\"p\">;<\/span>\n        <span class=\"n\">publisher<\/span><span class=\"p\">.<\/span><span class=\"nf\">TriggerEvent<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Hello from the event!\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<\/code><\/pre>\n<\/div>\n<p>\u0627\u06cc\u0646\u062c\u0627\u060c <code>CustomEventArgs<\/code> \u062d\u0627\u0648\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc (<code>Message<\/code>) \u0628\u0647 \u06af\u0631\u062f\u0627\u0646\u0646\u062f\u06af\u0627\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f \u0645\u0646\u062a\u0642\u0644 \u0634\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"3_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_%D9%86%D9%85%D8%A7%DB%8C%D9%86%D8%AF%DA%AF%DB%8C_%D8%B3%D9%81%D8%A7%D8%B1%D8%B4%DB%8C\"><\/span>\n<p>  3. <strong>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0647 \u062c\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0632 \u067e\u06cc\u0634 \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 <code>EventHandler<\/code>\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0646\u0645\u0627\u06cc\u0646\u062f\u0647 \u062e\u0648\u062f \u0631\u0627 \u0628\u0631\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641 \u06cc\u06a9 \u0627\u0645\u0636\u0627\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f \u0633\u0641\u0627\u0631\u0634\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"%D9%85%D8%AB%D8%A7%D9%84-3\"><\/span>\n<p>  \u0645\u062b\u0627\u0644:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">delegate<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">CustomEventDelegate<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span> <span class=\"n\">message<\/span><span class=\"p\">);<\/span>\n\n<span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">EventPublisher<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">event<\/span> <span class=\"n\">CustomEventDelegate<\/span> <span class=\"n\">EventOccured<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">TriggerEvent<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span> <span class=\"n\">message<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">EventOccured<\/span><span class=\"p\">?.<\/span><span class=\"nf\">Invoke<\/span><span class=\"p\">(<\/span><span class=\"n\">message<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">EventSubscriber<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">OnEventOccured<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span> <span class=\"n\">message<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">Console<\/span><span class=\"p\">.<\/span><span class=\"nf\">WriteLine<\/span><span class=\"p\">(<\/span><span class=\"s\">$\"Event message: <\/span><span class=\"p\">{<\/span><span class=\"n\">message<\/span><span class=\"p\">}<\/span><span class=\"s\">\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"k\">class<\/span> <span class=\"nc\">Program<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">static<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">Main<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span><span class=\"p\">[]<\/span> <span class=\"n\">args<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">EventPublisher<\/span> <span class=\"n\">publisher<\/span> <span class=\"p\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">EventPublisher<\/span><span class=\"p\">();<\/span>\n        <span class=\"n\">EventSubscriber<\/span> <span class=\"n\">subscriber<\/span> <span class=\"p\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">EventSubscriber<\/span><span class=\"p\">();<\/span>\n\n        <span class=\"n\">publisher<\/span><span class=\"p\">.<\/span><span class=\"n\">EventOccured<\/span> <span class=\"p\">+=<\/span> <span class=\"n\">subscriber<\/span><span class=\"p\">.<\/span><span class=\"n\">OnEventOccured<\/span><span class=\"p\">;<\/span>\n        <span class=\"n\">publisher<\/span><span class=\"p\">.<\/span><span class=\"nf\">TriggerEvent<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Hello from the custom delegate event!\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"4_%D8%A8%D8%A7_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_Action_Delegate\"><\/span>\n<p>  4. <strong>\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Action Delegate<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0631\u0627 <code>Action<\/code> delegate \u0628\u062e\u0634\u06cc \u0627\u0632 \u0686\u0627\u0631\u0686\u0648\u0628 \u062f\u0627\u062a \u0646\u062a \u0627\u0633\u062a \u0648 \u0631\u0648\u0634\u06cc \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0627\u0631\u0632\u0634 \u0628\u0627\u0632\u06af\u0634\u062a\u06cc \u0646\u062f\u0627\u0631\u062f. \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0628\u06af\u06cc\u0631\u062f \u06a9\u0647 \u0622\u0646 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0645\u0646\u0627\u0633\u0628 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"%D9%85%D8%AB%D8%A7%D9%84-4\"><\/span>\n<p>  \u0645\u062b\u0627\u0644:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">EventPublisher<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">event<\/span> <span class=\"n\">Action<\/span><span class=\"p\">&lt;<\/span><span class=\"kt\">string<\/span><span class=\"p\">&gt;<\/span> <span class=\"n\">EventOccured<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">TriggerEvent<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span> <span class=\"n\">message<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">EventOccured<\/span><span class=\"p\">?.<\/span><span class=\"nf\">Invoke<\/span><span class=\"p\">(<\/span><span class=\"n\">message<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">EventSubscriber<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">OnEventOccured<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span> <span class=\"n\">message<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">Console<\/span><span class=\"p\">.<\/span><span class=\"nf\">WriteLine<\/span><span class=\"p\">(<\/span><span class=\"s\">$\"Action Event message: <\/span><span class=\"p\">{<\/span><span class=\"n\">message<\/span><span class=\"p\">}<\/span><span class=\"s\">\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"k\">class<\/span> <span class=\"nc\">Program<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">static<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">Main<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span><span class=\"p\">[]<\/span> <span class=\"n\">args<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">EventPublisher<\/span> <span class=\"n\">publisher<\/span> <span class=\"p\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">EventPublisher<\/span><span class=\"p\">();<\/span>\n        <span class=\"n\">EventSubscriber<\/span> <span class=\"n\">subscriber<\/span> <span class=\"p\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">EventSubscriber<\/span><span class=\"p\">();<\/span>\n\n        <span class=\"n\">publisher<\/span><span class=\"p\">.<\/span><span class=\"n\">EventOccured<\/span> <span class=\"p\">+=<\/span> <span class=\"n\">subscriber<\/span><span class=\"p\">.<\/span><span class=\"n\">OnEventOccured<\/span><span class=\"p\">;<\/span>\n        <span class=\"n\">publisher<\/span><span class=\"p\">.<\/span><span class=\"nf\">TriggerEvent<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Hello from Action-based event!\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<\/code><\/pre>\n<\/div>\n<p>\u0627\u06cc\u0646\u062c\u0627\u060c <code>Action&lt;string&gt;<\/code> delegate \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f \u06a9\u0647 \u06cc\u06a9 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0631\u0627 \u0645\u06cc \u06af\u06cc\u0631\u062f \u0648 \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u0627\u0646\u062f <code>void<\/code>.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"5_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_Func_Delegate\"><\/span>\n<p>  5. <strong>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Func Delegate<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0631\u0627 <code>Func<\/code> delegate \u0631\u0648\u0634\u06cc \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631\u06cc \u0631\u0627 \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u0627\u0646\u062f. \u0627\u06af\u0631\u0686\u0647 \u06a9\u0645\u062a\u0631 \u0627\u062a\u0641\u0627\u0642 \u0645\u06cc \u0627\u0641\u062a\u062f \u06a9\u0647 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0631\u0627 \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u0646\u062f (\u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0634\u0646\u0648\u0646\u062f\u06af\u0627\u0646 \u0631\u0627 \u0645\u0637\u0644\u0639 \u0645\u06cc \u06a9\u0646\u0646\u062f\u060c \u0646\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0627\u0632\u062e\u0648\u0631\u062f)\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 <code>Func<\/code> \u0628\u0631\u0627\u06cc \u0637\u0631\u0627\u062d\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f\u06cc \u06a9\u0647 \u0627\u0646\u062a\u0638\u0627\u0631 \u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631 \u0628\u0627\u0632\u06af\u0634\u062a\u06cc \u0631\u0627 \u062f\u0627\u0631\u062f.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"%D9%85%D8%AB%D8%A7%D9%84-5\"><\/span>\n<p>  \u0645\u062b\u0627\u0644:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">EventPublisher<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">event<\/span> <span class=\"n\">Func<\/span><span class=\"p\">&lt;<\/span><span class=\"kt\">string<\/span><span class=\"p\">,<\/span> <span class=\"kt\">bool<\/span><span class=\"p\">&gt;<\/span> <span class=\"n\">EventOccured<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">TriggerEvent<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span> <span class=\"n\">message<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"kt\">bool<\/span> <span class=\"n\">result<\/span> <span class=\"p\">=<\/span> <span class=\"n\">EventOccured<\/span><span class=\"p\">?.<\/span><span class=\"nf\">Invoke<\/span><span class=\"p\">(<\/span><span class=\"n\">message<\/span><span class=\"p\">)<\/span> <span class=\"p\">??<\/span> <span class=\"k\">false<\/span><span class=\"p\">;<\/span>\n        <span class=\"n\">Console<\/span><span class=\"p\">.<\/span><span class=\"nf\">WriteLine<\/span><span class=\"p\">(<\/span><span class=\"s\">$\"Event result: <\/span><span class=\"p\">{<\/span><span class=\"n\">result<\/span><span class=\"p\">}<\/span><span class=\"s\">\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">EventSubscriber<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"kt\">bool<\/span> <span class=\"nf\">OnEventOccured<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span> <span class=\"n\">message<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">Console<\/span><span class=\"p\">.<\/span><span class=\"nf\">WriteLine<\/span><span class=\"p\">(<\/span><span class=\"s\">$\"Func Event message: <\/span><span class=\"p\">{<\/span><span class=\"n\">message<\/span><span class=\"p\">}<\/span><span class=\"s\">\"<\/span><span class=\"p\">);<\/span>\n        <span class=\"k\">return<\/span> <span class=\"n\">message<\/span><span class=\"p\">.<\/span><span class=\"nf\">Contains<\/span><span class=\"p\">(<\/span><span class=\"s\">\"success\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"k\">class<\/span> <span class=\"nc\">Program<\/span>\n    <span class=\"p\">{<\/span>\n    <span class=\"k\">static<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">Main<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span><span class=\"p\">[]<\/span> <span class=\"n\">args<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">EventPublisher<\/span> <span class=\"n\">publisher<\/span> <span class=\"p\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">EventPublisher<\/span><span class=\"p\">();<\/span>\n        <span class=\"n\">EventSubscriber<\/span> <span class=\"n\">subscriber<\/span> <span class=\"p\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">EventSubscriber<\/span><span class=\"p\">();<\/span>\n\n        <span class=\"n\">publisher<\/span><span class=\"p\">.<\/span><span class=\"n\">EventOccured<\/span> <span class=\"p\">+=<\/span> <span class=\"n\">subscriber<\/span><span class=\"p\">.<\/span><span class=\"n\">OnEventOccured<\/span><span class=\"p\">;<\/span>\n        <span class=\"n\">publisher<\/span><span class=\"p\">.<\/span><span class=\"nf\">TriggerEvent<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Hello with success!\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<\/code><\/pre>\n<\/div>\n<p>\u0627\u06cc\u0646\u062c\u0627\u060c <code>Func&lt;string, bool&gt;<\/code> \u0631\u0648\u06cc\u062f\u0627\u062f\u06cc \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 a \u0631\u0627 \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u0627\u0646\u062f <code>bool<\/code> \u0628\u0631 \u0627\u0633\u0627\u0633 \u067e\u06cc\u0627\u0645 \u0627\u0631\u0633\u0627\u0644 \u0634\u062f\u0647<\/p>\n<h3><span class=\"ez-toc-section\" id=\"6_%D8%B1%D9%88%D8%B4%E2%80%8C%D9%87%D8%A7%DB%8C_%D9%86%D8%A7%D8%B4%D9%86%D8%A7%D8%B3_%D8%A8%D8%B1%D8%A7%DB%8C_%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA_%D8%B1%D9%88%DB%8C%D8%AF%D8%A7%D8%AF\"><\/span>\n<p>  6. <strong>\u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0646\u0627\u0634\u0646\u0627\u0633 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0631\u0648\u06cc\u062f\u0627\u062f<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0646\u0627\u0634\u0646\u0627\u0633 \u06cc\u0627 \u0639\u0628\u0627\u0631\u0627\u062a \u0644\u0627\u0645\u0628\u062f\u0627 \u062f\u0631 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0645\u0634\u062a\u0631\u06a9 \u0634\u0648\u06cc\u062f.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"%D9%85%D8%AB%D8%A7%D9%84-6\"><\/span>\n<p>  \u0645\u062b\u0627\u0644:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">EventPublisher<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">event<\/span> <span class=\"n\">EventHandler<\/span> <span class=\"n\">EventOccured<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">TriggerEvent<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">EventOccured<\/span><span class=\"p\">?.<\/span><span class=\"nf\">Invoke<\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">,<\/span> <span class=\"n\">EventArgs<\/span><span class=\"p\">.<\/span><span class=\"n\">Empty<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"k\">class<\/span> <span class=\"nc\">Program<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">static<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">Main<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span><span class=\"p\">[]<\/span> <span class=\"n\">args<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">EventPublisher<\/span> <span class=\"n\">publisher<\/span> <span class=\"p\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">EventPublisher<\/span><span class=\"p\">();<\/span>\n\n        <span class=\"c1\">\/\/ Subscribe with an anonymous method<\/span>\n        <span class=\"n\">publisher<\/span><span class=\"p\">.<\/span><span class=\"n\">EventOccured<\/span> <span class=\"p\">+=<\/span> <span class=\"k\">delegate<\/span> <span class=\"p\">(<\/span><span class=\"kt\">object<\/span> <span class=\"n\">sender<\/span><span class=\"p\">,<\/span> <span class=\"n\">EventArgs<\/span> <span class=\"n\">e<\/span><span class=\"p\">)<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"n\">Console<\/span><span class=\"p\">.<\/span><span class=\"nf\">WriteLine<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Event handled using anonymous method\"<\/span><span class=\"p\">);<\/span>\n        <span class=\"p\">};<\/span>\n\n        <span class=\"c1\">\/\/ Subscribe with a lambda expression<\/span>\n        <span class=\"n\">publisher<\/span><span class=\"p\">.<\/span><span class=\"n\">EventOccured<\/span> <span class=\"p\">+=<\/span> <span class=\"p\">(<\/span><span class=\"n\">sender<\/span><span class=\"p\">,<\/span> <span class=\"n\">e<\/span><span class=\"p\">)<\/span> <span class=\"p\">=&gt;<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"n\">Console<\/span><span class=\"p\">.<\/span><span class=\"nf\">WriteLine<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Event handled using lambda expression\"<\/span><span class=\"p\">);<\/span>\n        <span class=\"p\">};<\/span>\n\n        <span class=\"n\">publisher<\/span><span class=\"p\">.<\/span><span class=\"nf\">TriggerEvent<\/span><span class=\"p\">();<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<\/div>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f\u060c \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 \u0631\u0648\u06cc\u062f\u0627\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0631\u0648\u0634 \u0647\u0627\u06cc \u0646\u0627\u0634\u0646\u0627\u0633 \u06cc\u0627 \u0639\u0628\u0627\u0631\u0627\u062a \u0644\u0627\u0645\u0628\u062f\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0631\u0648\u0646 \u062e\u0637\u06cc \u0645\u0634\u062e\u0635 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"7_%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA_%D8%B5%D8%B1%DB%8C%D8%AD_%D8%B1%D9%88%DB%8C%D8%AF%D8%A7%D8%AF_%D8%A8%D8%A7_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_%D8%B1%D8%A7%D8%A8%D8%B7\"><\/span>\n<p>  7. <strong>\u0645\u062f\u06cc\u0631\u06cc\u062a \u0635\u0631\u06cc\u062d \u0631\u0648\u06cc\u062f\u0627\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0631\u0627\u0628\u0637<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0635\u0631\u0627\u062d\u062a \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0628\u062e\u0634\u06cc \u0627\u0632 \u06cc\u06a9 \u0631\u0627\u0628\u0637 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f\u060c \u0648 \u06a9\u0644\u0627\u0633 \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u0631\u0627\u0628\u0637 \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u0646\u062f \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a \u0631\u0648\u06cc\u062f\u0627\u062f \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u0646\u062f.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"%D9%85%D8%AB%D8%A7%D9%84-7\"><\/span>\n<p>  \u0645\u062b\u0627\u0644:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">interface<\/span> <span class=\"nc\">IEventPublisher<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">event<\/span> <span class=\"n\">EventHandler<\/span> <span class=\"n\">EventOccured<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">EventPublisher<\/span> <span class=\"p\">:<\/span> <span class=\"n\">IEventPublisher<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">event<\/span> <span class=\"n\">EventHandler<\/span> <span class=\"n\">EventOccured<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">TriggerEvent<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">EventOccured<\/span><span class=\"p\">?.<\/span><span class=\"nf\">Invoke<\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">,<\/span> <span class=\"n\">EventArgs<\/span><span class=\"p\">.<\/span><span class=\"n\">Empty<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">EventSubscriber<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">OnEventOccured<\/span><span class=\"p\">(<\/span><span class=\"kt\">object<\/span> <span class=\"n\">sender<\/span><span class=\"p\">,<\/span> <span class=\"n\">EventArgs<\/span> <span class=\"n\">e<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">Console<\/span><span class=\"p\">.<\/span><span class=\"nf\">WriteLine<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Event handled from interface\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"k\">class<\/span> <span class=\"nc\">Program<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">static<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">Main<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span><span class=\"p\">[]<\/span> <span class=\"n\">args<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">EventPublisher<\/span> <span class=\"n\">publisher<\/span> <span class=\"p\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">EventPublisher<\/span><span class=\"p\">();<\/span>\n        <span class=\"n\">EventSubscriber<\/span> <span class=\"n\">subscriber<\/span> <span class=\"p\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">EventSubscriber<\/span><span class=\"p\">();<\/span>\n\n        <span class=\"n\">IEventPublisher<\/span> <span class=\"n\">iPublisher<\/span> <span class=\"p\">=<\/span> <span class=\"n\">publisher<\/span><span class=\"p\">;<\/span>\n        <span class=\"n\">iPublisher<\/span><span class=\"p\">.<\/span><span class=\"n\">EventOccured<\/span> <span class=\"p\">+=<\/span> <span class=\"n\">subscriber<\/span><span class=\"p\">.<\/span><span class=\"n\">OnEventOccured<\/span><span class=\"p\">;<\/span>\n\n        <span class=\"n\">publisher<\/span><span class=\"p\">.<\/span><span class=\"nf\">TriggerEvent<\/span><span class=\"p\">();<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<\/div>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644\u060c <code>IEventPublisher<\/code> \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 \u0631\u0648\u06cc\u062f\u0627\u062f \u0648 \u06a9\u0644\u0627\u0633\u200c\u0647\u0627\u06cc \u0645\u0634\u0627\u0628\u0647 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f <code>EventPublisher<\/code> \u0628\u0627\u06cc\u062f \u0622\u0646 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"8_%D9%86%D9%85%D8%A7%DB%8C%D9%86%D8%AF%DA%AF%D8%A7%D9%86_%DA%86%D9%86%D8%AF_%D8%A8%D8%A7%D8%B2%DB%8C%DA%AF%D8%B1%DB%8C_%D9%88_%D8%B1%D9%88%DB%8C%D8%AF%D8%A7%D8%AF%D9%87%D8%A7\"><\/span>\n<p>  8. <strong>\u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u0627\u0646 \u0686\u0646\u062f \u0628\u0627\u0632\u06cc\u06af\u0631\u06cc \u0648 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc \u0633\u06cc \u0634\u0627\u0631\u067e \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0686\u0646\u062f \u067e\u062e\u0634\u06cc \u0628\u0627\u0634\u0646\u062f\u060c \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u06a9\u0647 \u0686\u0646\u062f\u06cc\u0646 \u0631\u0648\u0634 \u0631\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u062f\u0631 \u067e\u0627\u0633\u062e \u0628\u0647 \u06cc\u06a9 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632 \u0631\u0648\u06cc\u062f\u0627\u062f \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u06a9\u0631\u062f.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"%D9%85%D8%AB%D8%A7%D9%84-8\"><\/span>\n<p>  \u0645\u062b\u0627\u0644:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">EventPublisher<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">event<\/span> <span class=\"n\">Action<\/span><span class=\"p\">&lt;<\/span><span class=\"kt\">string<\/span><span class=\"p\">&gt;<\/span> <span class=\"n\">EventOccured<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">TriggerEvent<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span> <span class=\"n\">message<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">EventOccured<\/span><span class=\"p\">?.<\/span><span class=\"nf\">Invoke<\/span><span class=\"p\">(<\/span><span class=\"n\">message<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">EventSubscriber<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">FirstHandler<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span> <span class=\"n\">message<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">Console<\/span><span class=\"p\">.<\/span><span class=\"nf\">WriteLine<\/span><span class=\"p\">(<\/span><span class=\"s\">$\"First handler: <\/span><span class=\"p\">{<\/span><span class=\"n\">message<\/span><span class=\"p\">}<\/span><span class=\"s\">\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">SecondHandler<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span> <span class=\"n\">message<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">Console<\/span><span class=\"p\">.<\/span><span class=\"nf\">WriteLine<\/span><span class=\"p\">(<\/span><span class=\"s\">$\"Second handler: <\/span><span class=\"p\">{<\/span><span class=\"n\">message<\/span><span class=\"p\">}<\/span><span class=\"s\">\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"k\">class<\/span> <span class=\"nc\">Program<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">static<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">Main<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span><span class=\"p\">[]<\/span> <span class=\"n\">args<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">EventPublisher<\/span> <span class=\"n\">publisher<\/span> <span class=\"p\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">EventPublisher<\/span><span class=\"p\">();<\/span>\n        <span class=\"n\">EventSubscriber<\/span> <span class=\"n\">subscriber<\/span> <span class=\"p\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">EventSubscriber<\/span><span class=\"p\">();<\/span>\n\n        <span class=\"n\">publisher<\/span><span class=\"p\">.<\/span><span class=\"n\">EventOccured<\/span> <span class=\"p\">+=<\/span> <span class=\"n\">subscriber<\/span><span class=\"p\">.<\/span><span class=\"n\">FirstHandler<\/span><span class=\"p\">;<\/span>\n        <span class=\"n\">publisher<\/span><span class=\"p\">.<\/span><span class=\"n\">EventOccured<\/span> <span class=\"p\">+=<\/span> <span class=\"n\">subscriber<\/span><span class=\"p\">.<\/span><span class=\"n\">SecondHandler<\/span><span class=\"p\">;<\/span>\n\n        <span class=\"n\">publisher<\/span><span class=\"p\">.<\/span><span class=\"nf\">TriggerEvent<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Hello to multiple handlers!\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<\/code><\/pre>\n<\/div>\n<p>\u0627\u06cc\u0646\u062c\u0627\u060c \u0647\u0631 \u062f\u0648 <code>FirstHandler<\/code> \u0648 <code>SecondHandler<\/code> \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0631\u0648\u06cc\u062f\u0627\u062f \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u06cc \u0634\u0648\u062f\u060c \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0645\u06cc \u0634\u0648\u0646\u062f.<\/p>\n<p>\u0627\u06cc\u0646\u0647\u0627 \u0631\u0627\u06cc\u062c \u062a\u0631\u06cc\u0646 \u0631\u0627\u0647 \u0647\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u062f\u0631 \u0633\u06cc \u0634\u0627\u0631\u067e \u0647\u0633\u062a\u0646\u062f. \u0627\u06cc\u0646 \u06a9\u0647 \u0622\u06cc\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u0627\u0646 \u062f\u0627\u062e\u0644\u06cc \u0645\u0627\u0646\u0646\u062f <code>Action<\/code>\u060c <code>Func<\/code>\u060c \u06cc\u0627 <code>EventHandler<\/code>\u060c \u06cc\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u0648\u0627\u0631\u062f \u0633\u0641\u0627\u0631\u0634\u06cc\u060c \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u0646\u062f \u0633\u06cc\u0633\u062a\u0645 \u0647\u0627\u06cc \u0642\u0648\u06cc \u0648 \u062c\u062f\u0627 \u0634\u062f\u0647 \u0628\u0633\u0627\u0632\u06cc\u062f.<\/p>\n<p>\u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f \u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u0646\u0647\u0627\u06cc\u06cc \u062e\u0644\u0627\u0635\u0647 \u06a9\u0646\u06cc\u0645\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">using<\/span> <span class=\"nn\">System<\/span><span class=\"p\">;<\/span>\n\n<span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">EventExamples<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ 1. Traditional event declaration with custom EventArgs<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">CustomEventArgs<\/span> <span class=\"p\">:<\/span> <span class=\"n\">EventArgs<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"k\">public<\/span> <span class=\"kt\">string<\/span> <span class=\"n\">Message<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">set<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n    <span class=\"p\">}<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">event<\/span> <span class=\"n\">EventHandler<\/span><span class=\"p\">&lt;<\/span><span class=\"n\">CustomEventArgs<\/span><span class=\"p\">&gt;<\/span> <span class=\"n\">TraditionalEvent<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"c1\">\/\/ 2. Event using Action delegate<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">event<\/span> <span class=\"n\">Action<\/span> <span class=\"n\">SimpleEvent<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"c1\">\/\/ 3. Event using Action&lt;T&gt; delegate<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">event<\/span> <span class=\"n\">Action<\/span><span class=\"p\">&lt;<\/span><span class=\"kt\">string<\/span><span class=\"p\">&gt;<\/span> <span class=\"n\">ParameterizedEvent<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"c1\">\/\/ 4. Event using Func&lt;T, TResult&gt; delegate<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">event<\/span> <span class=\"n\">Func<\/span><span class=\"p\">&lt;<\/span><span class=\"kt\">string<\/span><span class=\"p\">,<\/span> <span class=\"kt\">bool<\/span><span class=\"p\">&gt;<\/span> <span class=\"n\">FuncEvent<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"c1\">\/\/ 5. Custom delegate event<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">delegate<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">CustomDelegate<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span> <span class=\"n\">message<\/span><span class=\"p\">,<\/span> <span class=\"kt\">int<\/span> <span class=\"n\">number<\/span><span class=\"p\">);<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">event<\/span> <span class=\"n\">CustomDelegate<\/span> <span class=\"n\">CustomEvent<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"c1\">\/\/ 6. Event with multiple parameters using Action<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">event<\/span> <span class=\"n\">Action<\/span><span class=\"p\">&lt;<\/span><span class=\"kt\">string<\/span><span class=\"p\">,<\/span> <span class=\"kt\">int<\/span><span class=\"p\">,<\/span> <span class=\"kt\">bool<\/span><span class=\"p\">&gt;<\/span> <span class=\"n\">MultiParamEvent<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"c1\">\/\/ Methods to raise the events<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">RaiseTraditionalEvent<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span> <span class=\"n\">message<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">TraditionalEvent<\/span><span class=\"p\">?.<\/span><span class=\"nf\">Invoke<\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">,<\/span> <span class=\"k\">new<\/span> <span class=\"n\">CustomEventArgs<\/span> <span class=\"p\">{<\/span> <span class=\"n\">Message<\/span> <span class=\"p\">=<\/span> <span class=\"n\">message<\/span> <span class=\"p\">});<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">RaiseSimpleEvent<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">SimpleEvent<\/span><span class=\"p\">?.<\/span><span class=\"nf\">Invoke<\/span><span class=\"p\">();<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">RaiseParameterizedEvent<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span> <span class=\"n\">message<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">ParameterizedEvent<\/span><span class=\"p\">?.<\/span><span class=\"nf\">Invoke<\/span><span class=\"p\">(<\/span><span class=\"n\">message<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"kt\">bool<\/span> <span class=\"nf\">RaiseFuncEvent<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span> <span class=\"n\">input<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"k\">return<\/span> <span class=\"n\">FuncEvent<\/span><span class=\"p\">?.<\/span><span class=\"nf\">Invoke<\/span><span class=\"p\">(<\/span><span class=\"n\">input<\/span><span class=\"p\">)<\/span> <span class=\"p\">??<\/span> <span class=\"k\">false<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">RaiseCustomEvent<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span> <span class=\"n\">message<\/span><span class=\"p\">,<\/span> <span class=\"kt\">int<\/span> <span class=\"n\">number<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">CustomEvent<\/span><span class=\"p\">?.<\/span><span class=\"nf\">Invoke<\/span><span class=\"p\">(<\/span><span class=\"n\">message<\/span><span class=\"p\">,<\/span> <span class=\"n\">number<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">RaiseMultiParamEvent<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span> <span class=\"n\">message<\/span><span class=\"p\">,<\/span> <span class=\"kt\">int<\/span> <span class=\"n\">number<\/span><span class=\"p\">,<\/span> <span class=\"kt\">bool<\/span> <span class=\"n\">flag<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">MultiParamEvent<\/span><span class=\"p\">?.<\/span><span class=\"nf\">Invoke<\/span><span class=\"p\">(<\/span><span class=\"n\">message<\/span><span class=\"p\">,<\/span> <span class=\"n\">number<\/span><span class=\"p\">,<\/span> <span class=\"n\">flag<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"c1\">\/\/ Usage example<\/span>\n<span class=\"k\">class<\/span> <span class=\"nc\">Program<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">static<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">Main<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"kt\">var<\/span> <span class=\"n\">examples<\/span> <span class=\"p\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">EventExamples<\/span><span class=\"p\">();<\/span>\n\n        <span class=\"c1\">\/\/ Subscribe to events<\/span>\n        <span class=\"n\">examples<\/span><span class=\"p\">.<\/span><span class=\"n\">TraditionalEvent<\/span> <span class=\"p\">+=<\/span> <span class=\"p\">(<\/span><span class=\"n\">sender<\/span><span class=\"p\">,<\/span> <span class=\"n\">e<\/span><span class=\"p\">)<\/span> <span class=\"p\">=&gt;<\/span> <span class=\"n\">Console<\/span><span class=\"p\">.<\/span><span class=\"nf\">WriteLine<\/span><span class=\"p\">(<\/span><span class=\"s\">$\"Traditional event: <\/span><span class=\"p\">{<\/span><span class=\"n\">e<\/span><span class=\"p\">.<\/span><span class=\"n\">Message<\/span><span class=\"p\">}<\/span><span class=\"s\">\"<\/span><span class=\"p\">);<\/span>\n        <span class=\"n\">examples<\/span><span class=\"p\">.<\/span><span class=\"n\">SimpleEvent<\/span> <span class=\"p\">+=<\/span> <span class=\"p\">()<\/span> <span class=\"p\">=&gt;<\/span> <span class=\"n\">Console<\/span><span class=\"p\">.<\/span><span class=\"nf\">WriteLine<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Simple event fired\"<\/span><span class=\"p\">);<\/span>\n        <span class=\"n\">examples<\/span><span class=\"p\">.<\/span><span class=\"n\">ParameterizedEvent<\/span> <span class=\"p\">+=<\/span> <span class=\"n\">message<\/span> <span class=\"p\">=&gt;<\/span> <span class=\"n\">Console<\/span><span class=\"p\">.<\/span><span class=\"nf\">WriteLine<\/span><span class=\"p\">(<\/span><span class=\"s\">$\"Parameterized event: <\/span><span class=\"p\">{<\/span><span class=\"n\">message<\/span><span class=\"p\">}<\/span><span class=\"s\">\"<\/span><span class=\"p\">);<\/span>\n        <span class=\"n\">examples<\/span><span class=\"p\">.<\/span><span class=\"n\">FuncEvent<\/span> <span class=\"p\">+=<\/span> <span class=\"n\">input<\/span> <span class=\"p\">=&gt;<\/span> <span class=\"p\">{<\/span> <span class=\"n\">Console<\/span><span class=\"p\">.<\/span><span class=\"nf\">WriteLine<\/span><span class=\"p\">(<\/span><span class=\"s\">$\"Func event: <\/span><span class=\"p\">{<\/span><span class=\"n\">input<\/span><span class=\"p\">}<\/span><span class=\"s\">\"<\/span><span class=\"p\">);<\/span> <span class=\"k\">return<\/span> <span class=\"k\">true<\/span><span class=\"p\">;<\/span> <span class=\"p\">};<\/span>\n        <span class=\"n\">examples<\/span><span class=\"p\">.<\/span><span class=\"n\">CustomEvent<\/span> <span class=\"p\">+=<\/span> <span class=\"p\">(<\/span><span class=\"n\">message<\/span><span class=\"p\">,<\/span> <span class=\"n\">number<\/span><span class=\"p\">)<\/span> <span class=\"p\">=&gt;<\/span> <span class=\"n\">Console<\/span><span class=\"p\">.<\/span><span class=\"nf\">WriteLine<\/span><span class=\"p\">(<\/span><span class=\"s\">$\"Custom event: <\/span><span class=\"p\">{<\/span><span class=\"n\">message<\/span><span class=\"p\">}<\/span><span class=\"s\">, <\/span><span class=\"p\">{<\/span><span class=\"n\">number<\/span><span class=\"p\">}<\/span><span class=\"s\">\"<\/span><span class=\"p\">);<\/span>\n        <span class=\"n\">examples<\/span><span class=\"p\">.<\/span><span class=\"n\">MultiParamEvent<\/span> <span class=\"p\">+=<\/span> <span class=\"p\">(<\/span><span class=\"n\">message<\/span><span class=\"p\">,<\/span> <span class=\"n\">number<\/span><span class=\"p\">,<\/span> <span class=\"n\">flag<\/span><span class=\"p\">)<\/span> <span class=\"p\">=&gt;<\/span> <span class=\"n\">Console<\/span><span class=\"p\">.<\/span><span class=\"nf\">WriteLine<\/span><span class=\"p\">(<\/span><span class=\"s\">$\"Multi-param event: <\/span><span class=\"p\">{<\/span><span class=\"n\">message<\/span><span class=\"p\">}<\/span><span class=\"s\">, <\/span><span class=\"p\">{<\/span><span class=\"n\">number<\/span><span class=\"p\">}<\/span><span class=\"s\">, <\/span><span class=\"p\">{<\/span><span class=\"n\">flag<\/span><span class=\"p\">}<\/span><span class=\"s\">\"<\/span><span class=\"p\">);<\/span>\n\n        <span class=\"c1\">\/\/ Raise events<\/span>\n        <span class=\"n\">examples<\/span><span class=\"p\">.<\/span><span class=\"nf\">RaiseTraditionalEvent<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Hello, World!\"<\/span><span class=\"p\">);<\/span>\n        <span class=\"n\">examples<\/span><span class=\"p\">.<\/span><span class=\"nf\">RaiseSimpleEvent<\/span><span class=\"p\">();<\/span>\n        <span class=\"n\">examples<\/span><span class=\"p\">.<\/span><span class=\"nf\">RaiseParameterizedEvent<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Event with parameter\"<\/span><span class=\"p\">);<\/span>\n        <span class=\"kt\">bool<\/span> <span class=\"n\">result<\/span> <span class=\"p\">=<\/span> <span class=\"n\">examples<\/span><span class=\"p\">.<\/span><span class=\"nf\">RaiseFuncEvent<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Func event input\"<\/span><span class=\"p\">);<\/span>\n        <span class=\"n\">examples<\/span><span class=\"p\">.<\/span><span class=\"nf\">RaiseCustomEvent<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Custom message\"<\/span><span class=\"p\">,<\/span> <span class=\"m\">42<\/span><span class=\"p\">);<\/span>\n        <span class=\"n\">examples<\/span><span class=\"p\">.<\/span><span class=\"nf\">RaiseMultiParamEvent<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Multi-param\"<\/span><span class=\"p\">,<\/span> <span class=\"m\">100<\/span><span class=\"p\">,<\/span> <span class=\"k\">true<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<\/div>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u062a\u0648\u0636\u06cc\u062d \u0645\u062e\u062a\u0635\u0631\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0647\u0631 \u0631\u0648\u0634 \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<ol>\n<li>\u0631\u0648\u06cc\u062f\u0627\u062f \u0633\u0646\u062a\u06cc: \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 <code>EventHandler&lt;T&gt;<\/code> \u0628\u0627 \u0633\u0641\u0627\u0631\u0634\u06cc <code>EventArgs<\/code>.<\/li>\n<li>\u0631\u0648\u06cc\u062f\u0627\u062f \u0633\u0627\u062f\u0647: \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 <code>Action<\/code> \u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u06cc \u0628\u0631\u0627\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc \u0628\u062f\u0648\u0646 \u067e\u0627\u0631\u0627\u0645\u062a\u0631<\/li>\n<li>\u0631\u0648\u06cc\u062f\u0627\u062f \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc \u0634\u062f\u0647: \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 <code>Action&lt;T&gt;<\/code> \u0628\u0631\u0627\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc\u06cc \u0628\u0627 \u06cc\u06a9 \u067e\u0627\u0631\u0627\u0645\u062a\u0631<\/li>\n<li>\u0631\u0648\u06cc\u062f\u0627\u062f Func: \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 <code>Func&lt;T, TResult&gt;<\/code> \u0628\u0631\u0627\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631\u06cc \u0631\u0627 \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u0627\u0646\u062f.<\/li>\n<li>\u0631\u0648\u06cc\u062f\u0627\u062f \u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc: \u06cc\u06a9 \u0646\u0645\u0627\u06cc\u0646\u062f\u0647 \u0633\u0641\u0627\u0631\u0634\u06cc \u0628\u0631\u0627\u06cc \u0627\u0645\u0636\u0627\u0647\u0627\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f \u067e\u06cc\u0686\u06cc\u062f\u0647 \u062a\u0631 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<li>\u0631\u0648\u06cc\u062f\u0627\u062f \u0686\u0646\u062f \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc: \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 <code>Action&lt;T1, T2, T3&gt;<\/code> \u0628\u0631\u0627\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc\u06cc \u0628\u0627 \u0686\u0646\u062f\u06cc\u0646 \u067e\u0627\u0631\u0627\u0645\u062a\u0631<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u062f\u0631 \u0633\u06cc \u0634\u0627\u0631\u067e \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u06cc\u06a9 \u0648\u06cc\u0698\u06af\u06cc \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0628\u0647 \u0627\u0634\u06cc\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u0628\u0627 \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u06a9\u0646\u0646\u062f. \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0627\u0644\u06af\u0648\u06cc \u0646\u0627\u0638\u0631\u060c \u062c\u0627\u06cc\u06cc \u06a9\u0647 \u06cc\u06a9 \u0634\u06cc (\u0645\u0648\u0636\u0648\u0639) \u0628\u0647 \u0627\u0634\u06cc\u0627\u0621 \u062f\u06cc\u06af\u0631 (\u0646\u0627\u0638\u0631\u0627\u0646) \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0645\u0648\u0631\u062f \u0639\u0644\u0627\u0642\u0647 \u0631\u062e \u0645\u06cc \u062f\u0647\u062f \u0627\u0637\u0644\u0627\u0639 \u0645\u06cc \u062f\u0647\u062f. \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u062f\u0631 \u0633\u06cc &hellip;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-76128","post","type-post","status-publish","format-standard","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/76128","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=76128"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/76128\/revisions"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=76128"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=76128"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=76128"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}