using System; using System.Threading; class AsyncDelegatesCallback { public static int Add(int op1, int op2, out int result) { Thread.Sleep(1000); return (result = op1 + op2); } public delegate int AddDelegate(int op1, int op2, out int result); public static void AnnounceSum(IAsyncResult iar) { AddDelegate add = (AddDelegate)iar.AsyncState; int result; add.EndInvoke(out result, iar); Console.WriteLine("[AnnounceSum] The result is {0}", result); } static void Main() { int result; AddDelegate add = new AddDelegate(Add); add.BeginInvoke(6, 42, out result, new AsyncCallback(AnnounceSum), add); Thread.Sleep(1000); } }