using System;
using System.Threading;

namespace 线程_委托线程
{
class Program
{
public static int Test1(int i,string str)
{
Console.WriteLine("Test1"+i+str );
Thread.Sleep(100);//线程休眠 单位ms
return 100;
}
static void Main(string[] args)
{
Func<int,string ,int > a = Test1;
IAsyncResult ar = a.BeginInvoke(100,"wei",null,null);//VS运行异常
Console.WriteLine("main");
while (ar .IsCompleted ==false )//线程是否结束
{
Console.WriteLine(".");
}
int res = a.EndInvoke(ar);//异步线程返回值
Console.ReadKey();

        //检测线程结束
        bool isEnd = ar.AsyncWaitHandle.WaitOne(1000);//1000毫秒表示超时,如果等待了1000ms线程还没有结束的时,这个方法会返回false。
        //如在10001ms内结束了则返回的为true。
        if (isEnd )
        {
            int r = a.EndInvoke(ar);
            Console.WriteLine(r);
        }
        Console.ReadKey();
    }
}

}