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 eingetragenes Objekt darüber, 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, mit dem eine Antwort an den Transaktions-Manager gesendet wird.
Hinweise
Diese Methode wird für flüchtige Ressourcen aufgerufen, wenn der Transaktions-Manager einen einzelnen Phase-Commitvorgang für eine einzelne dauerhafte Ressource aufgerufen hat und dann die Verbindung mit der dauerhaften Ressource verloren ging, bevor das Transaktionsergebnis abgerufen wurde. Zu diesem Zeitpunkt kann das Transaktionsergebnis nicht sicher bestimmt werden.
Da InDoubt es sich um einen endgültigen Zustand für eine Transaktion handelt, sollten Sie nicht oder Rollback nach dem Aufrufen InDoubtvon aufrufenCommit.
Hinweis
Ihre Implementierung dieser Methode für die flüchtige Ressource sollte jeden 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 die Arbeit abgeschlossen ist.
Wenn der Ressourcen-Manager dauerhaft eingetragen wurde, aber nicht durch Aufrufen Done der Methode antwortet, ist der Transaktions-Manager nicht sicher, dass der Ressourcen-Manager den InDoubt Aufruf erhalten hat. Daher wartet der Transaktions-Manager weiterhin auf eine Antwort und verwaltet informationen, die für diese Transaktion relevant sind. Wenn Done nie aufgerufen wird, wird diese Information unbegrenzt im Arbeitsspeicher oder in einer systemweiten Ressource gespeichert. Dies führt dazu, dass Ressourcen nicht zurückgewonnen werden können. Bei einer verteilten Transaktion könnte dies schließlich das MSDTC-Protokoll füllen, das den MSDTC-Prozess anhält. Im Fall einer von verwalteten System.TransactionsTransaktion führt dies zu einer allmählichen und kontinuierlichen Erhöhung des Arbeitsspeicherverbrauchs des Prozesses des Ressourcenmanagers. Daher ist es von entscheidender Bedeutung, dass Sie die Done -Methode aufrufen, sobald Ihr Ressourcen-Manager ihre Vorbereitungsarbeiten abgeschlossen hat.