线程,任务,同步之异步执行和等待线程

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

  

posted on 2013-12-13 14:21  wp456  阅读(365)  评论(0)    收藏  举报

导航