Compartilhar via


Enlistment.Done Método

Definição

Indica que o participante da transação concluiu seu trabalho.

public:
 void Done();
public void Done ();
member this.Done : unit -> unit
Public Sub Done ()

Comentários

Durante a fase final da confirmação da transação, o gerenciador de transações chama o Commitmétodo ou InDoubt o Rollback participante, dependendo se a transação deve ser confirmada ou revertida. O gerenciador de recursos deve executar qualquer trabalho necessário para concluir a transação e informar ao gerenciador de transações que ela foi concluída chamando o Done método no enlistment parâmetro.

Se o gerenciador de recursos tiver se inscrito de forma durável, mas não responder pelo método de chamada Done , o gerenciador de transações não terá certeza de que o gerenciador de recursos recebeu a respectiva chamada de notificação. Dessa forma, o gerenciador de transações continua aguardando uma resposta e mantém informações relevantes para essa transação. Se Done nunca for chamada, essa informação será mantida indefinidamente na memória ou em um recurso de todo o sistema. Isso resulta em recursos que não podem ser recuperados. No caso de uma transação distribuída, isso pode, eventualmente, preencher o log do MSDTC que interrompe o processo MSDTC. No caso de uma transação gerenciada por System.Transactions, isso resulta em um aumento gradual e contínuo no consumo de memória do processo do gerenciador de recursos. Portanto, é crucial que você chame o método assim que o Done gerenciador de recursos terminar seu trabalho de preparação.

Um alistamento pode chamar o método a Done qualquer momento antes de ser chamado Prepared na fase de preparação. Ao fazer isso, a inscrição está lançando um voto somente leitura, o que significa que ela vota confirmação sobre a transação, mas não precisa receber o resultado final. Observe que, depois que esse método é chamado, o participante inscrito não recebe mais notificações do gerenciador de transações.

Aplica-se a

Confira também