IEnlistmentNotification.InDoubt(Enlistment) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Powiadamia o obiekcie wymienionym, że stan transakcji jest wątpliwy.
public:
void InDoubt(System::Transactions::Enlistment ^ enlistment);
public void InDoubt (System.Transactions.Enlistment enlistment);
abstract member InDoubt : System.Transactions.Enlistment -> unit
Public Sub InDoubt (enlistment As Enlistment)
Parametry
- enlistment
- Enlistment
Obiekt Enlistment używany do wysyłania odpowiedzi do menedżera transakcji.
Uwagi
Ta metoda jest wywoływana dla nietrwałych zasobów, gdy menedżer transakcji wywołał operację zatwierdzania pojedynczej fazy do pojedynczego zasobu trwałego, a następnie połączenie z zasobem trwałym zostało utracone przed uzyskaniem wyniku transakcji. W tym momencie nie można bezpiecznie określić wyniku transakcji.
Ponieważ InDoubt uważa się, że jest to stan końcowy transakcji, nie należy wywoływać Commit ani Rollback po wywołaniu metody InDoubt.
Uwaga
Implementacja tej metody dla nietrwałego zasobu powinna wykonać operację odzyskiwania lub powstrzymywania, która jest zrozumiała dla danych, których dotyczy problem. Po zakończeniu pracy metoda musi również wywołać metodę Done na obiekcie w parametrze enlistment
.
Jeśli menedżer zasobów zarejestrował się trwale, ale nie odpowiada za pomocą metody wywołującej Done , menedżer transakcji nie jest pewien, że menedżer zasobów odebrał InDoubt wywołanie. W związku z tym menedżer transakcji czeka na odpowiedź i utrzymuje informacje istotne dla tej transakcji. Jeśli Done nigdy nie jest wywoływana, ten fragment informacji jest przechowywany w pamięci lub w zasobie obejmującym cały system. Powoduje to, że zasoby nie mogą zostać odzyskane. W przypadku transakcji rozproszonej może to ostatecznie wypełnić dziennik MSDTC, który zatrzymuje proces MSDTC. W przypadku transakcji zarządzanej przez System.Transactionsprogram powoduje to stopniowy i ciągły wzrost zużycia pamięci w procesie menedżera zasobów. W związku z tym ważne jest, aby wywołać metodę po zakończeniu Done pracy przy przygotowaniu menedżera zasobów.