Programowanie asynchroniczne przy użyciu delegatów
Delegaty umożliwiają wywoływanie metody synchronicznej w sposób asynchroniczny. Podczas synchronicznego wywoływania delegata Invoke
metoda wywołuje metodę docelową bezpośrednio w bieżącym wątku. BeginInvoke
Jeśli metoda jest wywoływana, środowisko uruchomieniowe języka wspólnego (CLR) kolejkuje żądanie i zwraca natychmiast do elementu wywołującego. Metoda docelowa jest wywoływana asynchronicznie w wątku z puli wątków. Oryginalny wątek, który przesłał żądanie, może kontynuować wykonywanie równolegle z metodą docelową. Jeśli metoda wywołania zwrotnego została określona w wywołaniu BeginInvoke
metody , metoda wywołania zwrotnego jest wywoływana po zakończeniu metody docelowej. W metodzie EndInvoke
wywołania zwrotnego metoda uzyskuje wartość zwracaną i wszystkie parametry wejściowe/wyjściowe lub tylko do wyjścia. Jeśli nie określono metody wywołania zwrotnego podczas wywoływania BeginInvoke
metody , EndInvoke
można wywołać z wątku o nazwie BeginInvoke
.
Ważne
Kompilatory powinny emitować klasy delegatów z metodami Invoke
, BeginInvoke
i EndInvoke
przy użyciu podpisu delegowanego określonego przez użytkownika. Metody BeginInvoke
i EndInvoke
powinny być ozdobione jako natywne. Ponieważ te metody są oznaczone jako natywne, clR automatycznie zapewnia implementację w czasie ładowania klasy. Moduł ładujący gwarantuje, że nie zostaną one zastąpione.
W tej sekcji
Wywoływanie metod synchronicznych w sposób asynchroniczny
Omówienie użycia delegatów do wykonywania wywołań asynchronicznych do zwykłych metod i zawiera proste przykłady kodu, które pokazują cztery sposoby oczekiwania na wywołanie asynchroniczne w celu zwrócenia.
Sekcje pokrewne
Asynchroniczny wzorzec oparty na zdarzeniach (EAP)
Opisuje programowanie asynchroniczne na platformie .NET.