Asynchronní operace

Dokončení databázových operací může trvat dlouho. Pokud chcete zachovat odezvu uživatelského rozhraní nebo zabránit blokování vlákna požadavku, použijte asynchronní databázové metody místo synchronního čekání na dokončení příkazu.

Nainstalujte balíček NuGet Microsoft.Data.SqlClient pro kód klienta SQL. Pro nové aplikace použijte OpenAsync a metody ExecuteNonQueryAsync, ExecuteReaderAsync a ExecuteXmlReaderAsync s await. Tyto metody provádějí asynchronní vstup/výstup (I/O), aniž byste museli vytvořit vlákno na pozadí.

Microsoft.Data.SqlClient také podporuje vzorce zpětného volání, čekací objekty a dotazování popsané v této části. BeginExecuteNonQuery, BeginExecuteReader a BeginExecuteXmlReader metody se párují s EndExecuteNonQuery, EndExecuteReader a EndExecuteXmlReader. Nepřidávejte Asynchronous Processing=true do připojovací řetězec; Microsoft. Data.SqlClient nepodporuje toto klíčové slovo.

Poznámka:

Pro nový kód použijte asynchronní vzor založený na úlohách. Příklady v této části ukazují podporovaný Begin/End vzor pro aplikace, které potřebují zpětná volání, wait handly nebo dotazování.

Nechte každé připojení a příkaz aktivní, dokud se jeho operace neskonjí. Při volání odpovídající End metody nebo při čekání na dokončení úlohy sledujte výjimky. V desktopové aplikaci aktualizujte ovládací prvky pouze z vlákna uživatelského rozhraní.

V této sekci

Aplikace systému Windows využívající zpětné volání Poskytuje příklad demonstrující, jak bezpečně spustit asynchronní příkaz, správně zpracovat interakci s formulářem a jeho obsahem z samostatného vlákna.

ASP.NET aplikace využívající obslužné rutiny čekání Poskytuje příklad, který ukazuje, jak spustit více souběžných příkazů z ASP.NET stránky pomocí obslužných rutin čekání ke správě operace při dokončení všech příkazů.

Dotazování v konzolových aplikacích Poskytuje příklad ukazující použití dotazování k čekání na dokončení asynchronního spuštění příkazu z konzolové aplikace. Tato technika je také platná v knihovně tříd nebo jiné aplikaci bez uživatelského rozhraní.

Viz také