У меня есть операция, которая должна быть надежно выполнена в целом или не выполняться вообще.
- Цель состоит только в том, чтобы сохранить согласованность некоторых управляемых в памяти общих состояний.
- Эти состояния содержатся в домене приложения. Они не видны за пределами этого домена.
- Поэтому мне не нужно реагировать, когда домен или процесс отключаются.
- Я пишу библиотеку классов, и пользователь может вызывать мой код из любого места. Однако мой код не вызывает никакого пользовательского кода, даже виртуальных методов.
- CLR может размещаться.
Насколько я понимаю, мне не нужны ограниченные области выполнения (CER), поскольку:
- CER нужны только против печально известных
OutOfMemoryException
,ThreadAbortException
иStackOverflowException
. - Мой код не делает никакого распределения, поэтому я не забочусь об OutOfMemory (в любом случае выделения не должны выполняться в CER).
- Если произойдет переполнение стека, процесс в любом случае будет остановлен (или домен в некоторых сценариях размещения).
- Прерывание потока уже отложено до конца блока finally, а мой код уже находится в пределах одного.
Я прав в этих пунктах? Видите ли вы другие причины, по которым мне нужен CER?