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

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

但是,其他一些插件似乎强制我们的代码第二次加载,我们最终让我们的代码在两个不同的AppDomain上运行(当我们想要执行一个动作时,我们将它放在AppDomain 1的队列中,然后,Excels OnTime函数在AppDomain 2上运行dequeue方法,队列为空.

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

更新:

我们设法做的是在我们被调用时将我们的整个程序加载到其他插件的AppDomain中,现在我们在同一个地方(曾经是“其他域的网关”的地方)有一些奇怪的问题,比如上面提到的动作队列函数):

只要存在这种情况,SynchronizationContext.Current似乎重置为null,例如对于功能区上的单击处理程序的每次调用,SynchronizationContext.Current都设置为null.

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

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

翻译自:https://stackoverflow.com/questions/22143393/preventing-code-being-loaded-to-another-appdomain

转载注明原文:c# – 防止将代码加载到另一个AppDomain