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 einAsyncCallbackwird der Delegat durch den Befehl explizit getötetEndInvoke.

Ist das wirklich nötig? weilAsyncCallback wird erst aufgerufen, wenn die Delegate-Methode beendet ist.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage