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);
}
}