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łania delegata metoda Invoke bezpośrednio wywołuje metodę docelową na 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 wywołania zwrotnego, metoda EndInvoke uzyskuje wartość zwracaną oraz wszelkie parametry wejściowo-wyjściowe lub tylko wyjściowe. Jeśli nie określono metody wywołania zwrotnego podczas wywoływania BeginInvoke, EndInvoke można wywołać z wątku, który wywołał 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ć oznaczone 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 asynchronicznie
Omawia użycie delegatów do wykonywania wywołań asynchronicznych za pomocą zwykłych metod i zawiera proste przykłady kodu, które pokazują cztery sposoby oczekiwania na zwrócenie wyniku wywołania asynchronicznego.

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

Zobacz także