Sollte man innerhalb von AsyncCallback immer EndInvoke einen Delegaten anrufen?
Ich lese dasVerwenden Sie AsyncCallbackgibt es dieses Code-Snippet:
using System;
using System.Threading;
using System.Runtime.Remoting.Messaging;
class MainClass
{
delegate int MyDelegate(string s);
static void Main(string[] args)
{
MyDelegate X = new MyDelegate(DoSomething);
AsyncCallback cb = new AsyncCallback(DoSomething2);
IAsyncResult ar = X.BeginInvoke("Hello", cb, null);
Console.WriteLine("Press any key to continue");
Console.ReadLine();
}
static int DoSomething(string s)
{
Console.WriteLine("doooooooooooooooo");
return 0;
}
static void DoSomething2(IAsyncResult ar)
{
MyDelegate X = (MyDelegate)((AsyncResult)ar).AsyncDelegate;
X.EndInvoke(ar);
}
}
Beachten Sie, dass inDoSomething2
, das ist einAsyncCallback
wird der Delegat durch den Befehl explizit getötetEndInvoke
.
Ist das wirklich nötig? weilAsyncCallback
wird erst aufgerufen, wenn die Delegate-Methode beendet ist.