线程,任务,同步之异步执行和等待线程
/* 线程,任务,同步之异步执行和等待线程 */ 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; } } }