Enlistment.Done Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Указывает, что участник транзакции завершил свою работу.
public:
void Done();
public void Done();
member this.Done : unit -> unit
Public Sub Done ()
Комментарии
На последнем этапе фиксации транзакции диспетчер транзакций вызывает либо CommitRollbackInDoubt метод участника, либо метод, в зависимости от того, должна ли транзакция быть зафиксирована или откатена. Диспетчер ресурсов должен выполнить любую работу, необходимую для завершения транзакции, а затем сообщить диспетчеру транзакций о завершении, вызвав Done метод в параметре enlistment .
Если диспетчер ресурсов закружился, но не отвечает путем вызова Done метода, диспетчер транзакций не уверены, что диспетчер ресурсов получил соответствующий вызов уведомления. Таким образом, диспетчер транзакций продолжает ждать ответа и сохраняет сведения, относящиеся к этой транзакции. Если Done этот фрагмент информации никогда не вызывается, он хранится в памяти или в системном ресурсе. Это приводит к тому, что ресурсы не могут быть освобождены. В случае распределенной транзакции это может в конечном итоге заполнить журнал MSDTC, который останавливает процесс MSDTC. В случае транзакции, управляемой System.Transactionsэтим, это приводит к постепенному и постоянному увеличению потребления памяти процесса диспетчера ресурсов. Поэтому очень важно Done вызвать метод после завершения работы диспетчера ресурсов.
Перечисление может Done вызывать метод в любое время до вызова Prepared на этапе подготовки. Таким образом, зачисление приводит только к чтению голосов, что означает, что он голосует за транзакцию, но не требует получения окончательного результата. Обратите внимание, что после вызова этого метода участник не получает дополнительных уведомлений от диспетчера транзакций.