0

我有一个应用程序,它知道如何加载程序集并从该程序集中创建类的实例。

Assembly assembly = Assembly.LoadFrom(assembly_name);

foreach (Type t in assembly.GetTypes())
{
    if (t.GetInterfaces().Contains(typeof(ISimModuleInterface)))
    {
         current_loaded_modules[module_name] = Activator.CreateInstance(t) as simulator2k14.ISimModuleInterface;
         current_loaded_modules[module_name].OnModuleDeiniting += new simulator2k14.OnDeinitingDelegate(current_loaded_module_OnModuleDeiniting);
         current_loaded_modules[module_name].OnModuleIniting += new OnInitingDelegate(mainsim_OnModuleIniting);
         current_loaded_modules[module_name].OnModuleExecuteCommand += new OnExecudeCommandDelegate(mainsim_OnModuleExecuteCommand);

         break;
     }
}

然后在模块初始化中,我调用 SafeWaitHandle.DangerousGetHandle() 以将其传递给其他与硬件一起使用并生成事件的函数。一切都很顺利,直到我从一个程序集中只启动一个类的实例。当我从单个程序集加载类的第二个实例时,它看起来像是覆盖第一个实例的事件,并且来自驱动程序的所有事件仅转到第二个实例。

如果我只是加载主应用程序的两个实例,然后在每个实例中只加载一个来自程序集的类实例,一切都会好起来的。

我如何用一个程序集中的两个类实例来解决我的问题?

4

0 回答 0