如何表示没有例外的失败操作(多个appdomains)?

时间:2010-01-03 19:52:58

标签: c# .net exception-handling appdomain

我理解任何appdomain中的未处理异常都会导致该appdomain失效。这与任何标准表单或基于控制台的应用程序中的未处理异常没有什么不同。

如果是这样,当您跨越appdomain边界时,如何指示失败的操作?我正在记录它,以便我知道它发生了,但是操作是在一个方法中发生的几个操作之一,我认为没有任何异常会中断该方法。

为了更具体一点,我在另一个appdomain中创建的对象(代理)上设置字符串属性。此操作发生在其他appdomain中,但如果由于某种原因失败,我不想继续其他操作。它们都在一个方法中发生,因为我需要它作为单个原子操作发生。如果任何操作失败,整个原子操作都需要失败。

我想到了一个类似“最后操作状态”指示器的东西,我可以在每一个之后检查,但这看起来很糟糕。还有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

如果第二个AppDomain中的代码由于第一个代码中的代码调用而执行,则抛出异常应该没有问题。据我所知,运行时应该将异常传递回调用的AppDomain,而不是将其视为未处理的异常。我认为这是建议所有例外都可以序列化的部分原因。