Нужно ли всегда вызывать EndInvoke Делегата внутри AsyncCallback?

Я прочиталИспользуйте AsyncCallbackесть этот фрагмент кода:

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

Обратите внимание, что вDoSomething2, который являетсяAsyncCallback, делегат явно убит командой.EndInvoke

Это действительно необходимо? Так какAsyncCallback победил'Вызывается, если и до тех пор, пока не завершится выполнение метода делегата.

Ответы на вопрос(2)

Ваш ответ на вопрос