IEnlistmentNotification.InDoubt(Enlistment) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Benachrichtigt ein auflistenes Objekt, dass der Status einer Transaktion zweifelhaft ist.
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)
Parameter
- enlistment
- Enlistment
Ein Enlistment Objekt, das zum Senden einer Antwort an den Transaktionsmanager verwendet wird.
Hinweise
Diese Methode wird für veränderliche Ressourcen aufgerufen, wenn der Transaktions-Manager einen einzelnen Phasen-Commitvorgang auf eine einzelne dauerhafte Ressource aufgerufen hat, und die Verbindung mit der dauerhaften Ressource wurde verloren, bevor das Transaktionsergebnis abgerufen wurde. Zu diesem Zeitpunkt kann das Transaktionsergebnis nicht sicher bestimmt werden.
Wie InDoubt als endgültiger Status für eine Transaktion angesehen wird, sollten Sie weder anrufen CommitRollback noch nach dem Anruf anrufen InDoubt.
Note
Ihre Implementierung dieser Methode für die veränderliche Ressource sollte einen Wiederherstellungs- oder Eindämmungsvorgang ausführen, den sie für die betroffenen Daten versteht. Außerdem muss die Done Methode für den enlistment Parameter aufgerufen werden, wenn sie die Arbeit abgeschlossen hat.
Wenn der Ressourcenmanager die Liste dauerhaft auflistet, aber nicht durch aufrufende Done Methode antwortet, ist der Transaktions-Manager nicht sicher, dass der Ressourcenmanager den InDoubt Anruf empfangen hat. Daher wartet der Transaktionsmanager weiterhin auf eine Antwort und verwaltet informationen, die für diese Transaktion relevant sind. Wenn Done dieser Vorgang nie aufgerufen wird, werden diese Informationen unbegrenzt im Arbeitsspeicher oder in einer systemweiten Ressource aufbewahrt. Dies führt dazu, dass Ressourcen nicht zurückgefordert werden können. Im Falle einer verteilten Transaktion könnte dies schließlich das MSDTC-Protokoll ausfüllen, das den MSDTC-Prozess angehalten. Im Falle einer transaktion, die von System.Transactionsverwaltet wird, führt dies zu einer allmählichen und kontinuierlichen Erhöhung des Speicherverbrauchs des Ressourcenmanagerprozesses. Daher ist es wichtig, dass Sie die Done Methode aufrufen, sobald der Ressourcen-Manager mit Ihrer Vorbereitungsarbeit fertig ist.