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 на этапе подготовки. Таким образом, зачисление приводит только к чтению голосов, что означает, что он голосует за транзакцию, но не требует получения окончательного результата. Обратите внимание, что после вызова этого метода участник не получает дополнительных уведомлений от диспетчера транзакций.

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

См. также раздел