IEnlistmentNotification.InDoubt(Enlistment) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Notifica um objeto inscrito de que o status de uma transação está duvidoso.
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.
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. Nesse ponto, o resultado da transação não pode ser determinado com segurança.
Como InDoubt é considerado um estado final para uma transação, você não deve ligar Commit ou Rollback depois de chamar InDoubt.
Observação
Sua implementação desse método para o recurso volátil deve executar qualquer operação de recuperação ou contenção que entender nos dados afetados. Ele também deve chamar o Done método no enlistment
parâmetro quando terminar seu trabalho.
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 InDoubt chamada. 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.