using System;
using System.Threading;
class MainClass{
public delegate double MathFunctionToCall(double arg);
public static void MathCallback(IAsyncResult iar)
{
MathFunctionToCall mc = (MathFunctionToCall) iar.AsyncState;
double result = mc.EndInvoke(iar);
Console.WriteLine("Function value = {0}", result);
}
public static void CallMathCallback(MathFunctionToCall mathFunc,double start,double end,double increment)
{
AsyncCallback cb = new AsyncCallback(MathCallback);
Console.WriteLine("BeginInvoke: {0}", start);
mathFunc.BeginInvoke(start, cb, mathFunc);
start += increment;
}
public static void Main()
{
CallMathCallback(new MathFunctionToCall(Math.Sin), 0.0, 1.0, 0.2);
Thread.Sleep(2000);
}
}
BeginInvoke: 0
Function value = 0