2014-03-03 22 views
8

我們有一個通常工作正常的excel插件,我們沒有設置使用AppDomains的任何東西。但是,其他一些插件似乎強制我們的代碼第二次加載,並且最終我們的代碼在兩個不同的AppDomains上運行(當我們要執行某個操作時,我們會將它放入隊列中AppDomain 1,然後,Excels OnTime函數在AppDomain 2上運行出隊方法,其中隊列爲空)。防止代碼被加載到另一個AppDomain

所以,我的問題是這樣的:有沒有簡單的方法來解決這個問題,也許阻止我們的程序被加載兩次或其他AppDomains?有沒有人有任何其他想法如何解決這個問題?

更新:

我們設法做到,是我們整個程序加載到其他插件的AppDomain中,當我們呼籲,現在我們在同一個地方(曾經是地方有奇怪的問題。「網關到其他域「,如提到的動作隊列功能):

每當出現這種情況時,SynchronizationContext.Current似乎重置爲空,例如對於功能區上的每個單擊處理函數調用,SynchronizationContext.Current是設置爲空。

我甚至試過調試.Net代碼,它碰巧說框架會記住一箇舊的同步上下文,當所有事情都回到原來的狀態時,舊的同步上下文爲空。

任何人都可以在這個問題上提供任何幫助,我真的開始失去它嗎?

+0

喜德揚是Web應用程序還是贏基於解決方案。 – Alok

+0

夥計,認真嗎?如果問題本身包含很多關於Excel的討論,絕對不提及任何遠程連接到Web或問題標籤的東西都不會提供它,這裏是:這是「基於勝出的解決方案」。我們有網絡組件,但我認爲它根本不適合這個問題。 –

+0

必須問,甚至你正在使用c#.net該方法改變解決方案的解決方案:) – Alok

回答

1
+0

請看看評論有關詳細信息,我們找到了一種方法,讓我們的代碼不會在兩個應用程序域中加載兩次(這就是問題更新應該說的內容)。我會接受的解決方案是防止我們的代碼被加載,因爲如果我們從第三方域運行(出於某種原因,我們有同步上下文問題),有一個實例不能幫助我們。如果我錯了,請糾正我,但我認爲這個答案不會阻止代碼首先被加載到其他應用程序域。 –

相關問題