using System; using System.Threading; public delegate int DelegateClass(out DateTime start,out DateTime stop); public class Starter { public static void Main() { DelegateClass del = MethodA; DateTime start; DateTime stop; IAsyncResult ar = del.BeginInvoke(out start, out stop,null, null); ar.AsyncWaitHandle.WaitOne(); int elapse = del.EndInvoke(out start, out stop, ar); Console.WriteLine("Start time: {0}", start.ToLongTimeString()); Console.WriteLine("Stop time: {0}", stop.ToLongTimeString()); Console.WriteLine("Elapse time: {0} seconds",elapse); } public static int MethodA(out DateTime start, out DateTime stop) { start = DateTime.Now; Thread.Sleep(5000); stop = DateTime.Now; return (stop - start).Seconds; } }