IEnlistmentNotification.InDoubt(Enlistment) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Notifica um objeto alistado que o estado de uma transação está em dúvida.
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 Enlistment objeto usado para enviar uma resposta ao gestor de transações.
Observações
Este método é chamado para recursos voláteis quando o gestor de transações invocou uma operação de commit de fase única para um único recurso duradouro, e depois a ligação ao recurso duradouro 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 é considerado um estado final para uma transação, não deve ligar InDoubt nem Commit depois de Rollback ligarInDoubt.
Note
A sua implementação deste método para o recurso volátil deve realizar qualquer operação de recuperação ou contenção que compreenda sobre os dados afetados. Deve também chamar o Done método no enlistment no parâmetro quando terminar o seu trabalho.
Se o gestor de recursos se alistou de forma duradoura, mas não responde através do método de chamada Done , o gestor de transações não tem a certeza de que o gestor de recursos recebeu a InDoubt chamada. Assim, o gestor de transações mantém-se à espera de uma resposta e mantém informações relevantes para essa transação. Se Done nunca for chamado, esta informação é mantida indefinidamente na memória ou num recurso a nível do sistema. Isto faz com que os recursos não possam ser recuperados. No caso de uma transação distribuída, isto poderia eventualmente preencher o registo MSDTC, o que interrompe o processo MSDTC. No caso de uma transação gerida por System.Transactions, isto resulta num aumento gradual e contínuo do consumo de memória do processo do gestor de recursos. Por isso, é crucial que contacte o Done processo assim que o seu gestor de recursos terminar o seu trabalho de preparação.