using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { public delegate void SomeEvent( object sender, EventArgs e ); class Button { public event SomeEvent EventRecieved; public void FireClick() { if ( EventRecieved != null ) EventRecieved( this, EventArgs.Empty ); } } class Program { static void Main( string[] args ) { Button b = new Button(); b.EventRecieved += new SomeEvent( ImageHandler.HandleImageChange ); b.FireClick(); // again, can be called, e.g., from UI thread } } public class ImageHandler { public static void HandleImageChange(object sender, EventArgs e ) { Console.WriteLine( "changed" ); } } }