C# event subscription code example
Example 1: c# events
// --------------------- HOW TO CREATE EVENTS? ----------------------- //
// 1º - Main (Start the program)
// 2º - Publisher (the one that sends the event)
// 3º - Subscriber (the one that receives the event)
// PUBLISHER:
class Publisher
{
// 1º Create a delegate
public delegate void MyEventHandler (object source, EventArgs args);
// 2º Create an event based on that delegate
public event MyEventHandler myEvents;
// 3º Raise the event. For example, create a method that does:
protected virtual void Method1()
{
if(myEvents != null)
{
myEvents(this, EventArgs.Empty); // Calling the event if it points to some other method
}
}
public void Method2()
{
Console.WriteLine("This method is called from the Main function...");
// Continuation of 3º step
Method1();
}
}
// SUBSCRIBER:
public class Subscriber
{
public void Method1(object source, EventArgs e)
{
Console.WriteLine("The work done by the subscriber after the event was raised...");
}
}
// MAIN:
class Program
{
static void Main(string[] args)
{
var myPublisher = new Publisher();
var mySubscriber = new Subscriber();
// Give the Event a pointer to the function inside the class Subscriber
myPublisher.myEvents += mySubscriber.Method1;
myPublisher.Method2();
}
}
// ----------- HOW TO PASS ARGUMENTS/DATA THROUGH EVENTS? ------------ //
// You have to create an EventArgs class, like:
public class MyNewEventArgs : EventArgs // It will inherit from the EventArgs class, and you can add on top of that, some new information
{
public string newData {get; set;}
}
// Then, you just need to change the following (in the code above):
// | 1º |
public delegate void EventHandler (object source, MyNewEventArgs args); // Substitute EventArgs for MyNewEventArgs
// | 2º |
myEvents(this, new MyNewEventArgs() { newData = "Hello World!"} ); // Create an instance of the MyNewEventArgs class and pass it as a parameter of myEvents
// | 3º |
public void Method1(object source, MyNewEventArgs e) // Update all the other methods (substitute EventArgs for MyNewEventArgs)
// Now you can use the data inside the "e" variable on the Subscribers methods
Example 2: events in c# geeksforgeeks
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks; namespace event_programming{ //This is Subscriber Class class Program { static void Main(string[] args) { AddTwoNumbers a = new AddTwoNumbers(); //Event gets binded with delegates a.ev_OddNumber += new AddTwoNumbers.dg_OddNumber(EventMessage); a.Add(); Console.Read(); } //Delegates calls this method when event raised. static void EventMessage() { Console.WriteLine("********Event Executed : This is Odd Number**********"); } } //This is Publisher Class class AddTwoNumbers { public delegate void dg_OddNumber(); //Declared Delegate public event dg_OddNumber ev_OddNumber; //Declared Events public void Add() { int result; result = 5 + 4; Console.WriteLine(result.ToString()); //Check if result is odd number then raise event if((result % 2 != 0) && (ev_OddNumber != null)) { ev_OddNumber(); //Raised Event } } }}