Operacje asynchroniczne

Ukończenie operacji bazy danych może zająć dużo czasu. Aby zachować dynamiczny interfejs użytkownika lub uniknąć blokowania wątku żądania, użyj metod asynchronicznych bazy danych zamiast czekać synchronicznie na zakończenie polecenia.

Zainstaluj pakiet NuGet Microsoft.Data.SqlClient dla kodu klienta SQL. W przypadku nowych aplikacji użyj metod OpenAsyncExecuteNonQueryAsync, ExecuteReaderAsynci , i ExecuteXmlReaderAsync z await. Te metody wykonują asynchroniczne dane wejściowe/wyjściowe (We/Wy) bez konieczności tworzenia wątku w tle.

Microsoft.Data.SqlClient obsługuje również wzorce callback, uchwytu oczekiwania i sondowania opisane w tej sekcji. Metody BeginExecuteNonQuery, BeginExecuteReaderi BeginExecuteXmlReader są sparowane z elementami EndExecuteNonQuery, EndExecuteReaderi EndExecuteXmlReader. Nie dodawaj Asynchronous Processing=true do parametrów połączenia; Microsoft.Data.SqlClient nie obsługuje tego słowa kluczowego.

Uwaga / Notatka

W przypadku nowego kodu użyj wzorca asynchronicznego opartego na zadaniach. W przykładach w tej sekcji przedstawiono obsługiwany Begin/End wzorzec dla aplikacji, które wymagają wywołań zwrotnych, uchwytów oczekiwania lub sondowania.

Zachowaj aktywne każde połączenie i każde polecenie do czasu zakończenia ich wykonywania. Obserwuj wyjątki podczas wywoływania zgodnej End metody lub oczekiwania na zadanie. W aplikacji klasycznej zaktualizuj kontrolki tylko z wątku interfejsu użytkownika.

W tej Sekcji

Aplikacje systemu Windows korzystające z wywołań zwrotnych Zawiera przykład pokazujący sposób bezpiecznego wykonywania asynchronicznego polecenia, poprawnej obsługi interakcji z formularzem i jego zawartością z oddzielnego wątku.

Aplikacje ASP.NET korzystające z uchwytów oczekiwania Zawiera przykład ilustrujący, jak wykonywać wiele współbieżnych poleceń na stronie ASP.NET przy użyciu uchwytów oczekiwania, aby zarządzać operacją po zakończeniu wszystkich poleceń.

Sondowanie w aplikacjach konsoli Zawiera przykład pokazujący użycie sondowania w celu oczekiwania na ukończenie asynchronicznego wykonywania polecenia z poziomu aplikacji konsolowej. Ta technika jest również prawidłowa w bibliotece klas lub innej aplikacji bez interfejsu użytkownika.

Zobacz także