(一).描述 此示例演示使用线程回调方法(二).代码 using System;using System.Threading;using System.Runtime.Remoting.Messaging; namespace 回调{ //委托声明(函数签名) delegate string MyMethodDelegate(); class MyClass { //调用的方法 public static string MyMethod() { //Console.WriteLine(System.Threading.Thread.CurrentThread.IsBackground); for(int i = 0;i < 3; i++) //延长时间(模拟实际任务) { Thread.Sleep(1000); } return "Hello Word"; } //声明委托,调用MyMethod private static MyMethodDelegate d = new MyMethodDelegate(MyClass.MyMethod); //声明委托,调用AsyncCallbackMethod private static System.AsyncCallback a = new System.AsyncCallback(MyClass.AsyncCallbackMethod); [STAThread] static void Main(string[] args) { d.BeginInvoke(a,null); Console.ReadLine(); //这句不能去掉,否则主线程执行完成后,子线会会强迫调用Abort()方法销毁掉,也就执行不到回调方法了 } public static void AsyncCallbackMethod(System.IAsyncResult myIAsyncResult) { string strEnd = d.EndInvoke(myIAsyncResult); //委托调用的方法已经完成,输出其值 Console.WriteLine(strEnd); Console.Read(); } }} 本示例代码已经测试,能够正常运行! (三).示例下载 http://www.cnblogs.com/Files/ChengKing/ThreadExample.rar

评论