I have the following code:
delegate int doStuffDel(int instanceNo, int sleepTime, int repeatCount);
string result;
private int doStuff(int instanceNo, int sleepTime, int repeatCount)
{
for (int i = 0; i < repeatCount; i++)
{
Console.Write(instanceNo);
Thread.Sleep(sleepTime);
}
result = instanceNo + " repeated " + repeatCount;
return instanceNo;
}
private void button3_Click(object sender, EventArgs e)
{
doStuffDel del = doStuff;
IAsyncResult ar = del.BeginInvoke(3, 120, 50, finishedCallback, result);
}
private void finishedCallback(IAsyncResult ar)
{
Console.WriteLine("Done. The result was " + ar.AsyncState.ToString());
}
I thought the res.AsyncState would return the string, passed as the last argument in the call to BeginInvoke, but it's null. Does anybody know why?
PS, I know I could pass the del as the last argument in BeginInvoke and then call EndInvoke in the callback, to get some result from the doStuff method, -- or I could just get the string val from the class! -- but I am surpised that the AsyncState on the AsyncResult object is null...
Any help much appreciated!
JS