C#:AppDomain UnhandledException错误

时间:2012-07-24 06:35:43

标签: c# appdomain serializable unhandled-exception

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

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

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

修改 所以我将Serializable放在我的MainWindowViewModel类上,但它确实经历了。当我运行应用程序时,同样的错误在程序集'MainUI中键入'MainUI.MainWindowViewModel',Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'未标记为可序列化。“。请帮忙。谢谢

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

修改

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

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

1 个答案:

答案 0 :(得分:3)

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

您收到错误的原因是该类型正在尝试跨越appdomain边界而未能这样做,因为它不可序列化或远程对象。这也是你不想发生的事情。

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

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