从动态加载的DLL回调

时间:2016-12-20 08:54:45

标签: c# dll

我是关于如何从动态加载的dll回调主exe的想法? (注意:这个dll将在回调后的某个时刻卸载)

Context C#

我正在开发一个服务原型,在开发过程中,稍后可以更新其核心。我有一个存根主,它将服务调用进入“主dll”。我希望能够回调主exe,告诉它在完成最新dll的新副本后重新加载核心dll。我有负载 - 卸载工作。但是,我无法获得回传或更新传递的IntPtr工作和其他类似的想法。 E.g。

    loader.ExecuteStaticMethod(cMain_DLL, "Class1", "My_CallBack", new object[] {out _Count }); 

不会编译

我使用了稍加修改的http://www.c-sharpcorner.com/uploadfile/girish.nehte/how-to-unload-an-assembly-loaded-dynamically-using-reflection/来加载和卸载dll,以及在dll中调用函数。

        Type[] types = parameters.Select(o=>o.GetType()).ToArray();

        MethodInfo MyMethod = MyType.GetMethod(methodName, types); <= can retun null for some objects
        MyMethod.Invoke(inst, BindingFlags.InvokeMethod, null, parameters, null);

1 个答案:

答案 0 :(得分:1)

如果您只需要重新加载活动,请检查EventWaitHandle。一旦服务调用WaitOne(),您的存根就可以Set()对该句柄进行相应的操作。