簡體   English   中英

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

[英]COM Interop, RPC server is unavailable in c#

我正在使用COM Interop,我正在從interop dll實例化COM類對象所以,幾次對象被成功實例化並進行遠程過程調用沒有任何問題,但有時它拋出一個異常,如RPC Server是不可用的。 我正在使用的COM組件是用VB編寫的,我在c#中使用該組件。

那么,任何人都可以告訴我問題的可能原因(RPC服務器不可用)和解決此問題的方法。

我現在對這個問題很無奈。

所以,如果你能幫助我,請致謝

在審查了我的COM實現方法后,我發現了這個bug。 我使用靜態類初始化COM實例,初始化的東西發生在靜態構造函數中。 因此,每個應用程序會話都要進行一次初始化。 在這種情況下,當com實例被破壞或被丟棄時,調用COM方法會引發異常(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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM