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ě. Pokud je metoda BeginInvoke volána, modul CLR (Common Language Runtime) zařadí požadavek do fronty a okamžitě se vrátí k volajícímu. Cílová metoda se volá asynchronně na vlákně z fondu vláken. Původní vlákno, které odeslalo požadavek, může bez omezení 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. Ve zpětně volané metodě EndInvoke získá metoda návratovou hodnotu a všechny vstupní/výstupní nebo pouze 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 třídy delegátů s Invoke, BeginInvoke, a EndInvoke metodami používajícími podpis delegáta určený uživatelem. Metody BeginInvoke a EndInvoke by měly být označeny 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íšou.

V této sekci

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, jak čekat na návrat asynchronního volání.

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

Viz také