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.
Note
Реализация этого метода для нестабильного ресурса должна выполнять любую операцию восстановления или хранения, которые она понимает на затронутых данных. Он также должен вызывать Done метод в параметре enlistment после завершения работы.
Если диспетчер ресурсов закружился, но не отвечает путем вызова Done метода, диспетчер транзакций не уверены, что диспетчер ресурсов получил InDoubt вызов. Таким образом, диспетчер транзакций продолжает ждать ответа и сохраняет сведения, относящиеся к этой транзакции. Если Done этот фрагмент информации никогда не вызывается, он хранится в памяти или в системном ресурсе. Это приводит к тому, что ресурсы не могут быть освобождены. В случае распределенной транзакции это может в конечном итоге заполнить журнал MSDTC, который останавливает процесс MSDTC. В случае транзакции, управляемой System.Transactionsэтим, это приводит к постепенному и постоянному увеличению потребления памяти процесса диспетчера ресурсов. Поэтому очень важно Done вызвать метод после завершения работы диспетчера ресурсов.