Verhindern, dass Code in eine andere AppDomain geladen wird

8

Wir haben ein Plugin für Excel, das normalerweise gut funktioniert, und wir haben nichts eingerichtet, um AppDomains zu verwenden.

Allerdings scheint ein anderes Plugin unseren Code zum zweiten Mal zu laden, und am Ende läuft unser Code auf zwei verschiedenen AppDomains (wenn wir eine Aktion ausführen wollen, werden wir sie in eine Warteschlange stellen AppDomain 1, und dann führt die Excels OnTime -Funktion die Methode aus, die in AppDomain 2 aus der Warteschlange entfernt wird, wobei die Warteschlange leer ist.

Also, meine Frage ist folgende: Gibt es einen einfachen Weg, um dieses Problem zu umgehen, vielleicht verhindern, dass unser Programm zweimal oder durch andere AppDomains geladen wird? Hat jemand eine andere Idee, wie man dieses Problem angeht?

Aktualisierung:

Was wir geschafft haben, war, unser gesamtes Programm in die AppDomain eines anderen Plugins zu laden, wenn wir aufgerufen werden, und jetzt haben wir das seltsamste Problem an den gleichen Orten (Orte, die früher "Gateways zu anderen Domains" waren) Aktionswarteschlange):

Der SynchronizationContext.Current scheint immer dann auf null zurückgesetzt zu sein, wenn beispielsweise ein Aufruf des click-Handlers in der Multifunktionsleiste auftritt. SynchronizationContext.Current wird auf null gesetzt.

Ich habe sogar versucht, den .Net-Code zu debuggen, und es passiert, dass sich Framework einen alten Synchronisationskontext merkt, und wenn man alles auf den alten Stand zurückbringt, ist der alte Synchronisationskontext null.

Kann jemand zu diesem Thema Hilfe geben, ich fange wirklich an, es zu verlieren?

    
Dejan Maksimovic 03.03.2014, 09:49
quelle

1 Antwort

1

Ich denke, das könnte eine Lösung für Ihr Problem sein:

Ссылка

und ein Update zum obigen Beitrag:

Ссылка

    
nasskov 12.03.2014 12:14
quelle

Tags und Links