我有一个带有模块的应用程序。每个模块都是完全独立的。它们之间没有共享事件或其他任何事情。在每个模块中都有一个DataGrid和一个ContextMenu。在弹出窗口中打开的选定数据的详细信息。这些模块像往常一样由loalEventMap和presentationModel控制。
如果我立即关闭一个弹出窗口,然后再打开它,一切正常。但是,如果我更改了弹出窗口中的一些数据,关闭它,卸载我的模块,再次加载模块,然后再次打开弹出窗口,Mate抛出以下错误:
我的实施:
打开弹出窗口:
inputMask = new CDBInputMask();
PopUpManager.addPopUp(inputMask,this,true);近距离弹出:
PopUpManager.removePopUp(inputMask);inputMask = null;注入器:
<Injectors target="{CDBInputMask}" debug="true" dispatcherType="global" >在Mate-Forum中,我发现了一个类似但并不完全相同的问题。在这里,版主意味着它试图在一个模块中两次实例化一个类。在我的例子中,PopUpManager是一个单例类。所以看起来是同样的问题。第一次通过所有的工作都很好,第二次通过它崩溃,这一切都是因为类已经被注入。
我尝试使用带有跟踪的调试器来查看如何清除弹出或清除模块。但我还没有找到解决办法。如果你需要任何进一步的代码,我会张贴它。
提前谢谢。弗兰克
发布于 2009-11-11 04:44:04
听起来像是ApplicationDomain问题。
可能发生的情况是,在不同的安全域上多次加载类定义。这将导致抛出问题,尽管对象看起来是相同的类。就Flash运行时而言,它们不是相同的类型,除非它们位于相同的安全域上。
要解决这个问题,请为加载程序提供一个上下文,并使用主应用程序的安全域(假设您使用loader类加载模块):
var context:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain);
loader.loader(request, context);https://stackoverflow.com/questions/1707784
复制相似问题