Enlistment.Done Метод

Определение

Указывает, что участник транзакции завершил свою работу.

public:
 void Done();
public void Done ();
member this.Done : unit -> unit
Public Sub Done ()

Комментарии

На последнем этапе фиксации транзакции диспетчер транзакций вызывает Commitлибо InDoubt метод участника, Rollback либо метод, в зависимости от того, должна ли транзакция быть зафиксирована или откатена. Диспетчер ресурсов должен выполнить любую работу, необходимую для завершения транзакции, а затем сообщить диспетчеру транзакций о завершении, вызвав Done метод для enlistment параметра.

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

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

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

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