【问题标题】:Unloading Mono domains in multithreaded context在多线程上下文中卸载 Mono 域
【发布时间】:2012-04-13 09:01:15
【问题描述】:

我有一个多线程应用程序,可以从本机代码激活多个 Mono 域。 每个域都有自己的线程。 我使用以下代码来激活域:

///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);

但是当我卸载一个域时,应用程序崩溃了:

mono_domain_unload(m_domain);

当我在没有线程的情况下执行代码时,应用程序域被正确卸载。

【问题讨论】:

    标签: c++ c mono appdomain embedding


    【解决方案1】:

    我在 mono_domain_unload 之前调用了函数 mono_assembly_close

    mono_assembly_close(m_assembly);
    

    所以我删除了这个调用,并为卸载代码创建了一个临界区

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-22
      • 2015-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多