/*
线程,任务,同步之异步执行和等待线程
*/
using System;
using System.Threading;
namespace Frank
{
public class Test
{
public delegate int TakesAWhileDelegate(int data,int ms);
//程序入口
public static void Main(string[] args)
{
TakesAWhileDelegate dl = new TakesAWhileDelegate(TakesAWhile);
IAsyncResult ar = dl.BeginInvoke(1,3000,null,null);//异步执行
while(!ar.IsCompleted)
{
Console.Write(".");
if(ar.AsyncWaitHandle.WaitOne(50,false))//等待线程--等待其他任务执行完成
{
Console.WriteLine("等待线程成功!");
break;
}
Thread.Sleep(50);
}
int result = dl.EndInvoke(ar);
Console.WriteLine("result:{0}",result);
}
static int TakesAWhile(int data,int ms)
{
Console.WriteLine("TakesAWhile started");
Thread.Sleep(ms);
Console.WriteLine("TakesAWhile completed");
return ++data;
}
}
}