Поделиться через


Асинхронное программирование с использованием делегатов

Обновлен: Ноябрь 2007

Делегаты позволяют вызывать синхронные методы асинхронно. При синхронном вызове делегата метод Invoke вызывает метод назначения непосредственно в текущий поток. При вызове метода BeginInvoke среда CLR помещает запрос в очередь и сразу же возвращает управление вызывающему объекту. Метод назначения асинхронно вызывается в поток из пула потоков. Исходный поток, отправивший этот запрос, теперь может беспрепятственно продолжать работу параллельно с методом назначения. Если при вызове метода BeginInvoke был задан метод обратного вызова, он будет вызван при завершении выполнения метода назначения. В методе обратного вызова метод EndInvoke получает возвращаемое значение и любые входные и выходные параметры или только выходные параметры. Если метод обратного вызова не указан при вызове BeginInvoke, EndInvoke может быть вызван из потока, который вызвал BeginInvoke.

22t547yb.alert_caution(ru-ru,VS.90).gifВажное примечание.

Компиляторы должны выпускать классы делегатов с помощью методов Invoke, BeginInvoke и EndInvoke с использованием подписи делегата, задаваемой пользователем. Методы BeginInvoke и EndInvoke должны иметь вид собственных методов. Поскольку эти методы помечены как собственные, среда CLR автоматически обеспечивает реализацию во время загрузки класса. Загрузчик обеспечивает невозможность их переопределения.

В этом подразделе

Связанные подразделы

См. также

Ссылки

Delegate