Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Делегаты позволяют вызывать синхронный метод в асинхронном режиме. При синхронном вызове делегата, метод Invoke непосредственно вызывает целевой метод в текущем потоке. Если метод BeginInvoke вызывается, среда CLR помещает запрос в очередь и немедленно возвращает управление вызывающему объекту. Целевой метод вызывается асинхронно в потоке из пула потоков. Исходный поток, отправляющий запрос, может продолжать выполняться параллельно с целевым методом. Если метод обратного вызова был указан в вызове BeginInvoke метода, метод обратного вызова вызывается при завершении целевого метода. В методе обратного вызова метод EndInvoke получает возвращаемое значение и любые параметры: входные/выходные или только выходные. Если при вызове BeginInvoke метод обратного вызова не указан, EndInvoke можно вызвать из потока, который вызвал BeginInvoke.
Это важно
Компиляторы должны создавать классы делегатов с методами Invoke, BeginInvoke, и EndInvoke, используя подпись делегата, указанную пользователем. Методы BeginInvoke и EndInvoke должны быть помечены как нативные. Так как эти методы помечены как собственные, среда CLR автоматически предоставляет реализацию во время загрузки класса. Загрузчик гарантирует, что они не переопределяются.
В этом разделе
Вызов синхронных методов в асинхронном режиме
Описывается использование делегатов для выполнения асинхронных вызовов обычных методов и предоставляются простые примеры кода, показывающие четыре способа ожидания завершения или получения результата асинхронного вызова.
Связанные разделы
Шаблон асинхронного программирования на основе событий (EAP)
Описывает асинхронное программирование в .NET.