第一种:通过线程返回值的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();
        }
    }
View Code

相关文章: