Async Callback Delegate C# with Example



Async Callback Delegate C# with Example

 using System;
using System.Threading;
using System.Runtime.Remoting.Messaging;

namespace CSharpMultiThreading
{
    public delegate int Addition(int x, int y);

    class InvokingMethodAsyncronously
    {
	  private static bool isDone = false;
      static void Main(string[] args)
      {
		// Print out the ID of the executing thread.
		Console.WriteLine("Main() invoked on thread {0}.",Thread.CurrentThread.ManagedThreadId);

		// Invoke Add() on a secondary thread.
		Addition b = new Addition(Add);
		IAsyncResult iftAR = b.BeginInvoke(10, 10, new AsyncCallback(AddComplete), null);

		// This message will keep printing until the Add() method is finished.
		while(!isDone)
		{
			Console.WriteLine("Working...");
			Thread.Sleep(1000);
		}
		
		// Obtain the result of the Add() method when ready.
		int answer = b.EndInvoke(iftAR);
		Console.WriteLine("10 + 10 is {0}.", answer);
      }

		static void AddComplete(IAsyncResult itfAR)
		{
			Console.WriteLine("AddComplete() invoked on thread {0}.",Thread.CurrentThread.ManagedThreadId);
			Console.WriteLine("Your addition is complete");
			isDone = true;
		}
      static int Add(int x, int y)
      {
        // Print out the ID of the executing thread.
        Console.WriteLine("Add() invoked on thread {0}.",Thread.CurrentThread.ManagedThreadId);

        // Pause to simulate a lengthy operation.
        Thread.Sleep(5000);
        return x + y;
      }
    }
}
 

0 Comment's

Comment Form

Submit Comment