DbConnection.CloseAsync Metoda

Definicja

Asynchronicznie zamyka połączenie z bazą danych.

public:
 virtual System::Threading::Tasks::Task ^ CloseAsync();
public virtual System.Threading.Tasks.Task CloseAsync ();
abstract member CloseAsync : unit -> System.Threading.Tasks.Task
override this.CloseAsync : unit -> System.Threading.Tasks.Task
Public Overridable Function CloseAsync () As Task

Zwraca

Reprezentująca Task operację asynchroniczną.

Uwagi

Domyślna implementacja tej metody asynchronicznej deleguje do synchronicznego odpowiednika i zwraca ukończony Taskelement , co potencjalnie blokuje wątek wywołujący.

Dostawcy danych, którzy obsługują programowanie asynchroniczne , powinni zastąpić domyślną implementację przy użyciu asynchronicznych operacji we/wy.

Metody Close i CloseAsync wycofają wszystkie oczekujące transakcje. Następnie zwalniają połączenie z pulą połączeń lub zamykają połączenie, jeśli buforowanie połączeń jest wyłączone.

Aplikacja może wywołać Close lub CloseAsync więcej niż jeden raz. Nie jest generowany wyjątek.

Jeśli element DbConnection wykracza poza zakres, nie jest zamknięty. W związku z tym należy jawnie zamknąć połączenie przez wywołanie Close metody lub Dispose, które są funkcjonalnie równoważne. Jeśli wartość Pooling buforowania połączeń jest ustawiona na true lub yes, spowoduje to również wydanie połączenia fizycznego.

Przestroga

Nie zamykaj ani nie usuwaj DbConnectionobiektu , ani DbDataReaderżadnego innego zarządzanego obiektu w Finalize metodzie klasy . W finalizatorze należy zwolnić tylko niezarządzane zasoby, które należą do klasy bezpośrednio. Jeśli klasa nie jest właścicielem żadnych zasobów niezarządzanych, nie dołączaj Finalize metody do definicji klasy. Aby uzyskać więcej informacji, zobacz Odzyskiwanie pamięci.

Ta metoda jest przechowywana w zadaniu, które zwraca wszystkie wyjątki nieużytowe, które może zgłosić synchroniczna odpowiednik metody. Jeśli wyjątek jest przechowywany w zwracanym zadaniu, ten wyjątek zostanie zgłoszony podczas oczekiwania zadania. Wyjątki użycia, takie jak ArgumentException, są nadal zgłaszane synchronicznie. W przypadku przechowywanych wyjątków zobacz wyjątki zgłoszone przez Close()usługę .

Dotyczy