第一种:通过线程返回值的IsCompleted方法。
beginInvoke方法中前面的参数为委托方法中的参数,BeginInvoke方法的返回值为IAsyncResult类型,保存了线程的状态;
EndInvoke方法会返回线程结束后的返回值
class Program { static int Test(int i) { Console.WriteLine("test"+i); Thread.Sleep(10); return 100; } static void Main(string[] args) { Func<int,int> a = Test; IAsyncResult ar = a.BeginInvoke(20, null, null); Console.WriteLine("main"); while (ar.IsCompleted==false) { Console.Write("."); } int res = a.EndInvoke(ar); Console.Write(res); Console.ReadKey(); } }