Mega Code Archive

 
Categories / C# Tutorial / Thread
 

Async Callback Delegate

using System; using System.Collections.Generic; using System.Text; using System.Threading; using System.Runtime.Remoting.Messaging;   public delegate int BinaryOp(int x, int y);   class Program   {     static void Main(string[] args)     {       Console.WriteLine("Main() invoked on thread {0}.",Thread.CurrentThread.ManagedThreadId);        BinaryOp b = new BinaryOp(Add);       IAsyncResult iftAR = b.BeginInvoke(10, 10,new AsyncCallback(AddComplete),"adding these numbers.");       Console.ReadLine();     }     static void AddComplete(IAsyncResult itfAR)     {       Console.WriteLine("AddComplete() invoked on thread {0}.",Thread.CurrentThread.ManagedThreadId);        AsyncResult ar = (AsyncResult)itfAR;       BinaryOp b = (BinaryOp)ar.AsyncDelegate;       Console.WriteLine("10 + 10 is {0}.", b.EndInvoke(itfAR));       string msg = (string)itfAR.AsyncState;       Console.WriteLine(msg);     }     static int Add(int x, int y){       Console.WriteLine("Add() invoked on thread {0}.",Thread.CurrentThread.ManagedThreadId);        Thread.Sleep(5000);       return x + y;     }   }