class Program
{
public delegate int AsyncDelegate(int intValue, int intTime);//定义一个委托类型
static int AsyncDeleFun(int intValue, int intTime)
{
Console.WriteLine("委托线程开始");
Thread.Sleep(intTime); //线程休眠指定的时间
Console.WriteLine("委托线程结束");
return intValue += 1; //返回值
}
static void Main(string[] args)
{
AsyncDelegate ad = AsyncDeleFun;//实列化委托,并绑定到ASyncDeleFun静态方法
IAsyncResult ar = ad.BeginInvoke(0, 2000, null, null);//异步执行委托进程
while (!ar.IsCompleted) //判断异步委托是否执行完成
{
Console.Write(".");//输出“.”字符
Thread.Sleep(100);
}
int intResult = ad.EndInvoke(ar);//获取异步委托的执行结果
Console.WriteLine("异步委托执行的结果:{0}", intResult); //输出返回的结果
Console.Read();
//使用等待句柄获取委托线程的执行结果
AsyncDelegate ad = AsyncDeleFun;//实列化委托,并绑定到ASyncDeleFun静态方法
IAsyncResult ar = ad.BeginInvoke(0, 2000, null, null);//异步执行委托进程
while (true)
{
if (ar.AsyncWaitHandle.WaitOne(80, false)) //判断是否超时
{
break;// 跳出主线程的while循环
}
Console.Write(".");
}
int intResult = ad.EndInvoke(ar);//获取异步委托的执行结果
Console.WriteLine("异步委托执行的结果:{0}", intResult); //输出返回的结果
Console.Read();
}
}