我创建了一个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孩子,我怎么知道这个例外来自哪个孩子?
答案 0 :(得分:3)
这绝对不是这样做的方法。
您收到错误的原因是该类型正在尝试跨越appdomain边界而未能这样做,因为它不可序列化或远程对象。这也是你不想发生的事情。
作为解决方案,您应该在沙盒应用程序域中订阅该事件。
在该处理程序中,您可以通过您选择的某些远程接口/服务将异常信息传输到“主”应用程序域。