delegate BeginInvoke of IAsyncResult

image_pdfimage_print

using System;
using System.Threading;

class AsyncDelegatesBlocked
{
public static int Add(int op1, int op2, out int result)
{
Thread.Sleep(3000);
return (result = op1 + op2);
}
public delegate int AddDelegate(int op1, int op2,out int result);

static void Main()
{
int result;
AddDelegate add = new AddDelegate(Add);

IAsyncResult iAR = add.BeginInvoke(6, 42, out result,null, null);

for (int i = 0; i < 10; i++) { Thread.Sleep(200); Console.Write("."); } iAR.AsyncWaitHandle.WaitOne(); add.EndInvoke(out result, iAR); Console.WriteLine("[Main] The result is {0}", result); } } [/csharp]