防止将代码加载到另一个AppDomain

时间:2014-03-03 09:49:28

标签: c# .net excel appdomain

我们有一个excel插件通常正常工作,我们没有设置任何使用AppDomains的设置。

然而,其他一些插件似乎迫使我们的代码第二次加载,最后我们的代码运行在两个不同的AppDomains上(当我们想要执行一个动作时,我们会把它放在一个在AppDomain 1上排队,然后,Excel OnTime函数在AppDomain 2上运行出队方法,队列为空。

所以,我的问题是:是否有一种解决此问题的简单方法,可能会阻止我们的程序被加载两次或被其他AppDomains加载?有没有人对如何解决这个问题有任何其他想法?

更新

我们设法做的是在我们被调用时将我们的整个程序加载到其他插件的AppDomain中,现在我们在同一个地方(曾经是“通往其他域的网关”的地方)出现了最奇怪的问题,如上所述动作队列功能):

每当出现这种情况时,SynchronizationContext.Current似乎都会重置为null,例如对于Ribbon上的click处理程序的每次调用,SynchronizationContext.Current都设置为null。

我甚至尝试调试.Net代码,并且发生框架会记住旧的同步上下文,并且在将所有内容都恢复到原来状态时,旧的同步上下文为空。

任何人都可以在这个问题上给予任何帮助,我真的开始失去它吗?