using System; namespace Demo { //step 0. use event to simply complex interaction, independent data process module //step 1. declare a event signatrue public delegate void OnUserDeviceInsertedEvent(object sender, UserDeviceInsertedArgs e); //step 2. declare the event args public class UserDeviceInsertedArgs : EventArgs { public string DeviceData; } //step 3. declare a real work class which has 1 event field member and 1 working method member, in the method event will be triggered when condiation ready public class MagCard { public OnUserDeviceInsertedEvent OnDeviceInserted; public void StartingWork() { UserDeviceInsertedArgs data = new UserDeviceInsertedArgs(); data.DeviceData = "Demo Data"; if (OnDeviceInserted != null) { OnDeviceInserted(this, data); } } } //step 4. in main system, ord the event and supperly suitable process static class Program { /// <summary> /// ?????????? /// </summary> [STAThread] static void Main() { MagCard machine = new MagCard(); machine.OnDeviceInserted += new OnUserDeviceInsertedEvent(EventHandler_OnDeviceInserted); machine.StartingWork(); Console.ReadKey(); } private static void EventHandler_OnDeviceInserted(object sender, UserDeviceInsertedArgs e) { Console.ForegroundColor = ConsoleColor.Magenta; Console.WriteLine(e.DeviceData); Console.ResetColor(); } } //Coding by MoonKite,2010-June,Study C# //Thanks for Java2s,I learned a lot form this website. }