Sdílet prostřednictvím


Asynchronní programování pomocí delegátů

Delegáti umožňují volat synchronní metodu asynchronním způsobem. Když voláte delegát synchronně, Invoke metoda volá cílovou metodu přímo v aktuálním vlákně. BeginInvoke Pokud je volána metoda, modul CLR (Common Language Runtime) zařadí požadavek do fronty a vrátí se okamžitě volajícímu. Cílová metoda se volá asynchronně ve vlákně z fondu vláken. Původní vlákno, které odeslalo požadavek, je zdarma pokračovat v provádění paralelně s cílovou metodou. Pokud byla metoda zpětného volání zadána ve volání BeginInvoke metody, volá se metoda zpětného volání při ukončení cílové metody. V metodě EndInvoke zpětného volání metoda získá návratovou hodnotu a všechny vstupní/výstupní nebo výstupní parametry. Pokud není při volání zadána žádná metoda zpětného volání BeginInvoke, EndInvoke lze volat z vlákna, které volal BeginInvoke.

Důležité

Kompilátory by měly generovat delegované třídy s Invoke, BeginInvokea EndInvoke metody používající podpis delegáta určený uživatelem. Metody BeginInvoke a EndInvoke metody by měly být dekorované jako nativní. Vzhledem k tomu, že tyto metody jsou označeny jako nativní, CLR automaticky poskytuje implementaci v době načtení třídy. Zavaděč zajistí, že se nepřepíše.

V tomto oddílu

Asynchronní volání synchronních metod
Popisuje použití delegátů k provádění asynchronních volání obyčejných metod a poskytuje jednoduché příklady kódu, které ukazují čtyři způsoby čekání na asynchronní volání vrátit.

Asynchronní vzor založený na událostech (EAP)
Popisuje asynchronní programování v .NET.

Viz také