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; }
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(); } }
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(); }
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); }