COM Interop,RPC服务器在c#中不可用

我正在使用COM Interop,我正在从interop dll实例化COM类对象所以,几次对象被成功实例化并进行远程过程调用没有任何问题,但有时它抛出一个exception,如RPC Server是不可用的。 我正在使用的COM组件是用VB编写的,我在c#中使用该组件。

那么,任何人都可以告诉我问题的可能原因(RPC服务器不可用)和解决此问题的方法。

我现在对这个问题很无奈。

所以,如果你能帮助我,请转发

在查看我的COM实现方法后,我发现了这个bug。 我使用静态类初始化COM实例,初始化的东西发生在静态构造函数中。 因此,每个应用程序会话都要进行一次初始化。 在这种情况下,当com实例被破坏或被丢弃时,调用COM方法会引发exception(RPC Server不可用)。 所以,我使用以下方法来克服这个问题

try { m_COMObject.SomeMethod(); } Exception(exception exception) { DisposeCOMObject(); InitializeCOMOBject(); COMObject.Somethod(); } public void DisposeCOMObject() { m_COMObject = null; var process = Process.GetProcessesByNames("COM .exe").FirstDefault(); if(process != null) { process.kill(); } } public void InitializeCOMObject() { m_COMObject = null; m_COMObject = new COMObject(); } 

如果COM的实例无法进行调用,则配置实例并重新初始化COM并获取实例,然后调用RPC Server。