[英]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.