我有用C++編寫的遺留COM對象。我通過一個安裝程序,並在C#中,包裝應用註冊COM庫我實例化COM對象這樣傳統COM對象停止正確響應
Type type = Type.GetTypeFromProgID("GrpSvr.GrpCall");
this.grouperServer = Activator.CreateInstance(type);
string strMsg = this.grouperServer.GroupInit(this.strCommandFilePath, true, true);
,然後我使用COM對象進行各種操作和這些調用看起來像
int index = 2;
string strFieldName = "AXR";
this.grouperSever.MakeRec(strFieldName, index);
這些工作很好(起初)。然後,這些電話就會停止返回正確的結果。我可以確認,我正在將正確的值傳遞給給定的方法,並且在某個點和隨機時,grouperServer
對象開始返回廢話。
我無法調試通常意義上的庫,也沒有使用過COM庫。事實上,我可以在循環中傳遞一個COM方法的相同值,並且此方法停止返回正確的結果,這表明這可能是動態語言運行時(DLR)的調用問題。我的問題然後變成
如何找出/調試COM對象有什麼問題?
謝謝你的時間。
你的問題需要很多的視角來回答這個問題。所以,調試一下,看看你自己。除了標準代碼的所有其他內容之外,您的「遺留」表明com對象可能會隱藏更新的軟件環境。 – Deduplicator
非常感謝您的回覆。不幸的是,你不能以通常的方式調試COM對象[因爲你會用本機代碼],所以我爲什麼要問'怎樣才能找出COM對象有什麼問題'。不幸的是,你錯誤地將'千里眼'和'經驗'這兩個字混淆起來。 – MoonKnight
不是。你沒有提供你的COM對象或某種方式來識別它,所以任何回答的人都必須列出所有可能做錯的事情,並且似乎可以工作一段時間,或者成爲認證的心理學家。 – Deduplicator