public void MathCallback(IAsyncResult iar) { MathFunctionToCall mc = (MathFunctionToCall)iar.AsyncState; double result = mc.EndInvoke(iar); Console.WriteLine("Function value = {0}", result); }
WaitHandle DoInvoke(MathFunctionToCall mathFunc, double value) { AsyncCallTracker callTracker = new AsyncCallTracker(mathFunc); AsyncCallback cb = new AsyncCallback(MathCallback); IAsyncResult asyncResult = mathFunc.BeginInvoke(value, cb, callTracker); return(callTracker.DoneEvent); }
public void MathCallback(IAsyncResult iar) { AsyncCallTracker callTracker = (AsyncCallTracker)iar.AsyncState; MathFunctionToCall func = (MathFunctionToCall)callTracker.Function; double result = func.EndInvoke(iar); Console.WriteLine("Function value = {0}", result); callTracker.DoneEvent.Set(); }
WaitHandle DoInvoke(MathFunctionToCall mathFunc, double value) { AsyncCallback cb = new AsyncCallback(MathCallback); IAsyncResult asyncResult = mathFunc.BeginInvoke(value, cb, mathFunc); return(asyncResult.AsyncWaitHandle); }
public void CallMathCallback(MathFunctionToCall mathFunc, double start, double end, double increment) { AsyncCallback cb = new AsyncCallback(MathCallback); while (start < end) { Console.WriteLine("BeginInvoke: {0}", start); mathFunc.BeginInvoke(start, cb, mathFunc); start += increment; } }
public void CallMathCallback(MathFunctionToCall mathFunc) { WaitHandle[] waitArray = new WaitHandle[4]; Console.WriteLine("Begin Invoke"); waitArray[0] = DoInvoke(mathFunc, 0.1); waitArray[1] = DoInvoke(mathFunc, 0.5); waitArray[2] = DoInvoke(mathFunc, 1.0); waitArray[3] = DoInvoke(mathFunc, 3.14159); Console.WriteLine("Begin Invoke Done"); Console.WriteLine("Waiting for completion"); WaitHandle.WaitAll(waitArray, 10000, false); Console.WriteLine("Completion achieved"); }