Asynchronous Invocation Of Delegates : Asynchronous « Thread « C# / CSharp Tutorial






using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;

    public delegate int MyDelegate();

    public class ClassWithDelegate
    {
        public MyDelegate theDelegate;
        public void Run()
        {
            for (; ; )
            {
                if (theDelegate != null)
                {
                    foreach (MyDelegate del in theDelegate.GetInvocationList())
                    {
                        del.BeginInvoke(new AsyncCallback(ResultsReturned), del);
                    } 
                } 
            } 
        } 
        private void ResultsReturned(IAsyncResult iar)
        {
            MyDelegate del = (MyDelegate)iar.AsyncState;
            int result = del.EndInvoke(iar);
            Console.WriteLine("Delegate returned result: {0}", result);
        }
    }
    public class MyHandler
    {
        private int myCounter = 0;
        public void Register(ClassWithDelegate theClassWithDelegate)
        {
            theClassWithDelegate.theDelegate += new MyDelegate(DisplayCounter);
        }
        public int DisplayCounter()
        {
            Thread.Sleep(10000);
            Console.WriteLine("Done with work in DisplayCounter...");
            return ++myCounter;
        }
    }
    public class Test
    {
        public static void Main()
        {
            ClassWithDelegate theClassWithDelegate = new ClassWithDelegate();
            MyHandler fs = new MyHandler();
            fs.Register(theClassWithDelegate);
            theClassWithDelegate.Run();
        }
    }








20.23.Asynchronous
20.23.1.Asynchronous Calls: IAsyncResult
20.23.2.Async Method
20.23.3.Asynchronous Calls with Return Values
20.23.4.Use async job to compute
20.23.5.Pass delegate to deal with the IAsyncResult
20.23.6.Call asynchronously
20.23.7.Use AsyncCallback
20.23.8.Async Delegate
20.23.9.Asynchronous Invocation Of Delegates
20.23.10.Async Callback Delegate
20.23.11.Asynchronous Results Pattern Example
20.23.12.AsyncCallback and file viewer
20.23.13.Asynchronous Writing, Asynchronous Reading