Поделиться через


IEnlistmentNotification.InDoubt(Enlistment) Метод

Определение

Уведомляет включенный в список объект о сомнительном состоянии транзакции.

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)

Параметры

enlistment
Enlistment

Объект Enlistment, используемый для передачи ответа диспетчеру транзакций.

Комментарии

Этот метод вызывается для переменных ресурсов, когда диспетчер транзакций вызвал однофазную операцию фиксации в одном устойчивом ресурсе, а затем соединение с устойчивым ресурсом было потеряно до получения результата транзакции. На этом этапе невозможно безопасно определить результат транзакции.

Так как InDoubt считается окончательным состоянием транзакции, не следует вызывать Commit или Rollback после вызова InDoubt.

Примечание

Реализация этого метода для изменяющегося ресурса должна выполнять любые операции восстановления или сдерживания, которые он понимает с затронутыми данными. Он также должен вызвать Done метод в параметре enlistment , когда завершит работу.

Если диспетчер ресурсов завербовался в списке, но не отвечает вызовом Done метода, диспетчер транзакций не уверены, что диспетчер ресурсов получил InDoubt вызов. Таким образом, диспетчер транзакций продолжает ждать ответа и сохраняет сведения, относящиеся к этой транзакции. Если Done метод никогда не вызывается, эта часть информации хранится в памяти или в ресурсе всей системы. Это приводит к тому, что ресурсы не могут быть восстановлены. В случае распределенной транзакции это может в конечном итоге заполнить журнал MSDTC, который останавливает процесс MSDTC. В случае транзакции, управляемой , System.Transactionsэто приводит к постепенному и постоянному увеличению потребления памяти процессом диспетчера ресурсов. Поэтому очень важно, чтобы метод вызывался Done после завершения подготовки диспетчера ресурсов.

Применяется к