2012-04-13 9 views
2

Ich habe eine Multithread-Anwendung, die mehrere Mono-Domains aus nativem Code aktiviert. Jede Domain hat einen eigenen Thread. Ich verwende den folgenden Code, um eine Domain zu aktivieren:Entladen von Mono-Domains im Multithread-Kontext

///Create a new domain. 
m_domain = mono_domain_create_appdomain((char*) name.c_str(), NULL); 

///Activate the domain. 
mono_domain_set(m_domain, 0); 

///Register the current thread 
mono_thread_attach(m_domain); 

///Invoke some code ... 
mono_runtime_invoke (m_method, m_objectInstance, NULL, &exception); 

Aber wenn ich entladen eine Domäne den Absturz der Anwendung:

mono_domain_unload(m_domain); 

Wenn ich den Code ohne Einfädeln ausführen, werden die Anwendungsdomänen entladen korrekt.

Antwort

1

ich den Aufruf der Funktion mono_assembly_close, bevor mono_domain_unload:

mono_assembly_close(m_assembly); 

So entfernte ich diesen Aufruf, und erstellt Code ein kritischen Abschnitt für das Entladen.