委托/事件/异步/InvokeRequired/MultiThreading (Detegate/Event/Sync/InvokeRequired/MultiThreading )
委托事件
#region Delegate1 private void btnExe_Click(object sender, EventArgs e) { MyClass myObject = new MyClass(); myObject.WorkCompletedDelegate += TestDelegate; myObject.WorkCompleted += TestEvent; myObject.WorkCompletedDelegate(); myObject.Fire(); myObject.Fier2(); myObject.WorkCompletedDelegate(); // myObject.WorkCompleted(); // this line will raise compiling error } static void TestEvent() { Console.WriteLine("test event"); } static void TestDelegate() { Console.WriteLine("test delegate"); } public class MyClass { public delegate void CompletedEventHandler(); public event CompletedEventHandler WorkCompleted; public CompletedEventHandler WorkCompletedDelegate; public event CompletedEventHandler WorkCompleted2; public void Fier2() { WorkCompleted2 = new CompletedEventHandler(TestDelegate2); WorkCompleted2.BeginInvoke(null, null); //WorkCompleted2(TestDelegate); } public void TestDelegate2() { Console.WriteLine("test delegate2"); } public void Fire() { if (WorkCompleted != null) { this.WorkCompleted(); } if (WorkCompletedDelegate != null) { this.WorkCompletedDelegate(); } } } #endregion
Result:
#region Delegate2 private void btnDelegate_Click(object sender, EventArgs e) { Test obj = new Test(); obj.print += printout1; //绑定printout1方法 obj.print += printout2; //绑定printout2方法 obj.start(); } static void printout1() { Console.WriteLine("输出第一段字符串"); } static void printout2()