using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
//异步调用
//returntype EndInvoke(ref_out_argument,AsyncWaitHandle ar)
namespace Starter
{
public delegate int DeleageteClass(out DateTime start, out DateTime stop);
class Program
{
static void Main(string[] args)
{
DeleageteClass del = MethodA;
DateTime start;
DateTime stop;
IAsyncResult ar = del.BeginInvoke(out start, out stop, null, null);
ar.AsyncWaitHandle.WaitOne();
//do something else
//EndInvoke返回一个一步结果
int elapse = del.EndInvoke(out start, out stop, ar);
Console.WriteLine("start: "+ start.ToLongTimeString());
Console.WriteLine("stop: " + stop.ToLongTimeString());
Console.WriteLine("elapse: " + elapse);
Console.ReadLine();
}
public static int MethodA(out DateTime start,out DateTime stop)
{
start = DateTime.Now;
Thread.Sleep(5000);
stop = DateTime.Now;
return (stop-start).Seconds;
}
}
}