簡體   English   中英

在錯誤0x800706BA之前捕獲RPC鎖定

[英]Catch RPC lock before error 0x800706BA

我們有一些工具和服務可以與同一個COM服務器通信。 一段時間后,我們得到了錯誤

COMException(0x800706BA)RPC服務器不可用

似乎一個應用程序阻止了RPC,而第二個應用程序嘗試進​​行通信並失敗。 它不是同一個應用程序,有時它需要幾個小時才能發生。 但更糟糕的是:在RPC錯誤首次出現之后,所屬應用程序每次向該COM服務器調用COM函數時,都會收到相同的RPC錯誤-它已死。 重新啟動應用程序(或服務)后,所有程序運行良好,直到下一次...是否有辦法確定RPC是否可用,然后等待其釋放? 如果不是,我必須創建一個新的COM對象,並希望我不必重新啟動應用程序。

謝謝你的幫助。

(0x800706BA)RPC服務器不可用意味着客戶端無法聯系COM服務器端的RPC服務器。 請注意,有一個單獨的代碼用於RPC服務器太忙 發生這種情況的原因是以下任何一種情況:

  • COM服務器在另一台計算機上,並且存在連接問題
  • COM服務器已通過退出進程或崩潰而終止

請注意,后者幾乎符合您的描述-實例化了一個COM對象,獲得了指向它的指針,並且它工作了一段時間,然后發生了某些事情,並且通過該指針訪問該對象的任何嘗試都會導致RPC服務器不可用,因為沒有再運行的COM服務器進程以及其中的RPC服務器也消失了。 在這種情況下,您唯一可以做的就是重新實例化COM對象。 您的應用程序中將需要其他邏輯來解決此類情況。

我遇到了一個COM +對象的錯誤,並將其解決。 如果在應用程序中創建並使用了COM +對象,並且隨着時間的流逝,如果COM +應用程序被回收,則重復使用同一COM +對象會出現此錯誤。 您可能必須重新實例化COM +對象才能使其再次工作。 您可以嘗試以下步驟來重現該錯誤:

  1. 將COM +應用程序的生命周期回收限制設置為1分鍾。
  2. 編寫一個應用程序以創建COM +對象並進行COM +方法調用。 讓應用程序休眠一分鍾以上,然后嘗試進行方法調用。
  3. 現在,您將收到錯誤(0x800706BA)RPC服務器不可用

暫無
暫無

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

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