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
, BeginInvoke
a 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.
Související oddíly
Asynchronní vzor založený na událostech (EAP)
Popisuje asynchronní programování v .NET.