Пример альтернативы событию TransactionCompleted? - PullRequest
1 голос
/ 16 сентября 2010

Из записи MSDN для TransactionCompleted :

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

Осторожно Регистрация этого события отрицательно влияет на производительность транзакции, к которой оно присоединено.

У кого-нибудь есть пример или даже объяснение того, как подключиться к транзакции, чтобы просто получить уведомление о ее завершении?

1 Ответ

0 голосов
/ 10 октября 2010

MSDN может вводить в заблуждение.Регистрация события должна быть, по крайней мере, такой же быстрой, как и привлечение фиктивного менеджера ресурсов (не то чтобы я это проверял).

Дело в том, что, если вы подключитесь, транзакция станет распределенной (поскольку сейчас задействовано как минимум два менеджера ресурсов).Такая транзакция медленнее (больше ввода-вывода с сервером базы данных или чем-либо, с чем вы когда-либо работали).

Вы все равно можете попробовать способ зачисления.Просто внедрите IEnlistmentNotification и вызовите enlistment.Done() в каждом методе.Вы также захотите добавить свой код в метод Commit().

Затем передать ссылку на вашу реализацию в метод транзакции EnlistVolatile(..) (с параметрами, установленными в None).

...