Пример альтернативы событию TransactionCompleted?
Из записи MSDN для TransactionCompleted:
Вы можете зарегистрироваться для этого события вместо использования волатильного набора для получения информации о результатах транзакций.
Внимание! Регистрация этого события отрицательно влияет на производительность транзакции, к которой оно присоединено.
У кого-нибудь есть пример или даже объяснение того, как подключиться к транзакции, чтобы просто получить уведомление о ее завершении?
1 ответ
MSDN может вводить в заблуждение здесь. Регистрация события должна быть, по крайней мере, такой же быстрой, как и привлечение фиктивного менеджера ресурсов (не то, чтобы я это проверял).
Дело в том, что, если вы подключитесь, транзакция станет распределенной (поскольку сейчас задействовано как минимум два менеджера ресурсов). Такая транзакция медленнее (больше операций ввода-вывода с сервером базы данных или с чем бы вы ни работали).
Вы все еще можете попробовать подключить способ. Просто реализовать IEnlistmentNotification
и позвонить enlistment.Done()
в каждом методе. Вы также хотите добавить свой код в Commit()
метод.
Затем передайте ссылку на вашу реализацию транзакции EnlistVolatile(..)
метод (с параметрами, установленными в None
).