Exemple #1
0
        static void Main()
        {
            Console.WriteLine("[{0}] Main called", Thread.CurrentThread.ManagedThreadId);
            BinaryOperation asyncAdd = Add;
            //Add method run by threadpool thread;
            IAsyncResult asyncResult = asyncAdd.BeginInvoke(2, 2, new AsyncCallback(callBack), null);
            //Blocks the main thread till the add operation invoked by Begin Invoke finishes.
            int res = asyncAdd.EndInvoke(asyncResult);

            Console.WriteLine("BeginInvoke finished with result {0}", res);
            //Thread.Sleep((1000));
        }
        static void AddComplete(IAsyncResult asyncResult)
        {
            Console.WriteLine("AddComplete() invoked on thread {0}.",
                              Thread.CurrentThread.ManagedThreadId);
            Console.WriteLine("Your addition is complete");
            AsyncResult     concreteAsyncResult = (AsyncResult)asyncResult;
            BinaryOperation operation           =
                (BinaryOperation)concreteAsyncResult.AsyncDelegate;

            Console.WriteLine("10 + 10 is {0}.", operation.EndInvoke(asyncResult));
            string msg = (string)asyncResult.AsyncState;

            Console.WriteLine(msg);
            isDone = true;
        }
Exemple #3
0
 static void Main(string[] args)
 {
     try
     {
         Console.WriteLine($"Main method started {Thread.CurrentThread.ManagedThreadId}");
         BinaryOperation objBinary = AddAndMult;
         IAsyncResult    cookie    = objBinary.BeginInvoke(3, 4, null, null);
         Thread.Sleep(1000);
         Console.WriteLine($"Main method ended {Thread.CurrentThread.ManagedThreadId}");
         int res = objBinary.EndInvoke(cookie);
         Console.WriteLine(res);
         Console.ReadLine();
     }
     catch (Exception ex)
     {
         Console.WriteLine("Exception Raised");
         Console.ReadLine();
     }
 }
Exemple #4
0
        static void Main(string[] args)
        {
            cw("**** Synch Delegate Review ****");
            cw("Main invoked on thread " + Thread.CurrentThread.ManagedThreadId);

            BinaryOperation add = Add;

            // begin async
            var asyncResult = add.BeginInvoke(5, 5, null, null);

            while (!asyncResult.AsyncWaitHandle.WaitOne(1000, true))
            {
                cw("Doing more work in Main");
            }

            // end async
            int answer = add.EndInvoke(asyncResult);

            cw("5 + 5 is " + answer);
            cr();
        }
Exemple #5
0
        static void Main(string[] args)
        {
            Console.WriteLine("[{0}] Main called", Thread.CurrentThread.ManagedThreadId);
#if (false)
            Add(2, 2);
#else
            BinaryOperation binaryOp = Add;


            //https://msdn.microsoft.com/en-us/library/2e08f6yc(v=vs.110).aspx
            //https://www.codeproject.com/Articles/10311/What-s-up-with-BeginInvoke
            //This makes a call to ThreadPool.QueueUserWorkItem and executes the Add method
            IAsyncResult asyncResult = binaryOp.BeginInvoke(2, 2, null, null);
            binaryOp.EndInvoke(asyncResult);
#endif
            Console.WriteLine("[{0}] Main Done", Thread.CurrentThread.ManagedThreadId);


            int i = 20;
            //i.Saleem();
        }
        public static void Main(string[] args)
        {
            Console.WriteLine("Synch Delegate Review");

            Console.WriteLine("Main() invoked on thread {0}",
                              Thread.CurrentThread.ManagedThreadId);
            BinaryOperation binaryOperation = new BinaryOperation(Add);
            IAsyncResult    asyncResult     = binaryOperation.BeginInvoke(10, 10, null, null);

            while (!asyncResult.AsyncWaitHandle.WaitOne(1000, true))
            {
                Console.WriteLine("Doing more work in Main()!");
                Thread.Sleep(1000);
            }
            int answer = binaryOperation.EndInvoke(asyncResult);

            Console.WriteLine("10 + 10 is {0}.", answer);

            Console.Write("Press any key to continue . . . ");
            Console.ReadKey(true);
        }