public class MyEventArgs : EventArgs
public string EventMessage { get; }
public MyEventArgs(string message)
public class EventPublisher
public event EventHandler<MyEventArgs> MyEvent;
public void RaiseEvent(string message)
Console.WriteLine("EventPublisher: Event is about to be raised.");
MyEvent?.Invoke(this, new MyEventArgs(message));
public class EventSubscriber
public void HandleEvent(object sender, MyEventArgs e)
Console.WriteLine($"EventSubscriber: Event handled - {e.EventMessage}");
static void Main(string[] args)
EventPublisher publisher = new EventPublisher();
EventSubscriber subscriber = new EventSubscriber();
publisher.MyEvent += subscriber.HandleEvent;
publisher.RaiseEvent("Hello from the event!");
publisher.MyEvent -= subscriber.HandleEvent;
publisher.RaiseEvent("Event without subscribers.");