1

我创建了一个 AppDomain 并订阅了事件UnhandledException

AppDomain sandbox1 = AppDomain.CreateDomain("SandBox1");
sandbox1.UnhandledException += 
    new UnhandledExceptionEventHandler(sandbox1_UnhandledException);

当我的代码单步执行 UnhandledException 订阅时,它提示错误“在程序集 'MainUI,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null' 中的类型 'MainUI.MainWindowViewModel' 未标记为可序列化。”

编辑: 所以我将 Serializable 放在我的 MainWindowViewModel 类上,但它仍然通过了。当我运行应用程序时,同样的错误是“在程序集 'MainUI,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null' 中键入 'MainUI.MainWindowViewModel' 未标记为可序列化。” . 请帮忙。谢谢

[SecurityPermission(SecurityAction.Demand, 
                    Flags = SecurityPermissionFlag.AllFlags)] 
public class MainWindowViewModel : ViewModelBase
{......}

编辑

public MainWindowViewModel()
{
    AppDomain current = AppDomain.CurrentDomain;
    current.UnhandledException += 
        new UnhandledExceptionEventHandler(current_UnhandledException);
}

我的问题是,如果我有 2 个 appdomain 孩子,我怎么知道这个异常来自哪个孩子?

4

1 回答 1

3

这绝对不是这样做的方法。

您收到错误的原因是该类型试图跨越 appdomain 边界并且未能这样做,因为它不是可序列化的或可远程处理的对象。这也是你不希望发生的事情。

作为一种解决方案,您应该在您的沙盒应用程序域中订阅该事件。

在该处理程序中,您可以通过您选择的一些远程接口/服务将异常信息传输到“主”应用程序域。

于 2012-07-24T06:46:10.550 回答