Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Методы BeginInvoke() и EndInvoke()
Методы BeginInvoke() и EndInvoke()
Когда компилятор C# обрабатывает ключевое слово delegate, динамически генерируемый класс определяет два метода с именами BeginInvoke() и EndInvoke(). Для нашего определения делегата BinaryOp эти методы оказываются следующими.
sealed class BinaryOp : System.MulticastDelegate {
…
// Используется для асинхронного вызова метода.
public IAsyncResult BeginInvoke(int x, int y, AsyncCallback cb, object state);
// Используется для извлечения возвращаемого значения
// вызванного метода.
public int EndInvoke(IAsyncResult result);
}
Первый набор параметров, передаваемых в BeginInvoke(), формируется на основе формата делегата C# (в случае BinaryOp это два целочисленных значения). Последними двумя аргументами всегда являются System.AsyncCallback и System.Object. Мы рассмотрим роль этих параметров чуть позже, а пока что для каждого из них мы будем использовать null.