我确实有一项操作必须作为一个整体可靠地执行或根本不执行。
- 目标只是保持一些内存管理共享状态的一致性。
- 这些状态包含在应用程序域中。它们在此域之外不可见。
- 因此,当域或进程被拆除时,我不必做出反应。
- 我正在编写一个类库,用户可以从任何地方调用我的代码。但是我的代码不调用任何用户代码,甚至不调用虚拟方法。
- 可以托管 CLR。
据我了解,我不需要受限执行区域 (CER),因为:
- CER 只需要对付臭名昭著
OutOfMemoryException
的ThreadAbortException
和StackOverflowException
. - 我的代码没有进行任何分配,所以我不关心 OutOfMemory(无论如何分配不能在 CER 内完成)。
- 如果发生堆栈溢出,该进程无论如何都会被拆除(或某些托管场景中的域)。
- 线程中止已经延迟到 finally 块结束并且我的代码已经在一个块内。
我在这些方面是正确的吗?您是否看到我需要 CER 的其他原因?