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