IEnlistmentNotification.InDoubt(Enlistment) Método

Definição

Notifica um objeto inscrito de que o status de uma transação está duvidoso.Notifies an enlisted object that the status of a transaction is in doubt.

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)

Parâmetros

enlistment
Enlistment

Um objeto Enlistment usado para enviar uma resposta ao gerenciador de transação.An Enlistment object used to send a response to the transaction manager.

Comentários

Esse método é chamado para recursos voláteis quando o Gerenciador de transações invoca uma única operação de confirmação de fase para um único recurso durável e, em seguida, a conexão com o recurso durável foi perdida antes de obter o resultado da transação.This method is called for volatile resources when the transaction manager has invoked a single phase commit operation to a single durable resource, and then connection to the durable resource was lost prior to getting the transaction result. Nesse ponto, o resultado da transação não pode ser determinado com segurança.At that point, the transaction outcome cannot be safely determined.

Como InDoubt é considerado um estado final para uma transação, você não deve chamar Commit ou depois de Rollback chamar InDoubt .As InDoubt is considered to be a final state for a transaction, you should not call Commit or Rollback after calling InDoubt.

Observação

A implementação desse método para o recurso volátil deve executar qualquer operação de recuperação ou de confinamento que entenda os dados afetados.Your implementation of this method for the volatile resource should perform whatever recovery or containment operation it understands on the affected data. Ele também deve chamar o Done método no enlistment parâmetro quando ele conclui seu trabalho.It must also call the Done method on the on the enlistment parameter when it has finished its work.

Se o Gerenciador de recursos tiver inscrito permanentemente, mas não responder chamando Done o método, o Gerenciador de transações não terá certeza de que o Gerenciador de recursos recebeu a InDoubt chamada.If the resource manager has enlisted durably, but does not respond by calling Done method, the transaction manager is unsure that the resource manager has received the InDoubt call. Assim, o Gerenciador de transações continua aguardando uma resposta e mantém as informações relevantes para essa transação.As such, the transaction manager keeps waiting for a response, and maintains information relevant to this transaction. Se Done nunca for chamado, essa informação será mantida indefinidamente na memória ou em um recurso de todo o sistema.If Done is never called, this piece of information is kept around indefinitely in memory or in a system-wide resource. Isso resulta em recursos que não podem ser recuperados.This results in resources not being able to be reclaimed. No caso de uma transação distribuída, isso pode, eventualmente, preencher o log do MSDTC que interrompe o processo do MSDTC.In the case of a distributed transaction, this could eventually fill the MSDTC log which halts the MSDTC process. No caso de uma transação gerenciada pelo System.Transactions , isso resulta em um aumento gradual e contínuo no consumo de memória do processo do Gerenciador de recursos.In the case of a transaction managed by System.Transactions, this results in a gradual and continual increase in the memory consumption of the resource manager's process. Portanto, é crucial que você chame o Done método depois que o Gerenciador de recursos for concluído com seu trabalho de preparação.Therefore, it is crucial that you call the Done method once your resource manager is done with your prepare work.

Aplica-se a