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();
}
}
}