Udostępnij za pośrednictwem


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 BeginInvokemetody , EndInvoke można wywołać z wątku o nazwie BeginInvoke.

Ważne

Kompilatory powinny emitować klasy delegatów z metodami Invoke, BeginInvokei 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.

Asynchroniczny wzorzec oparty na zdarzeniach (EAP)
Opisuje programowanie asynchroniczne na platformie .NET.

Zobacz też