簡體   English   中英

優先機會異常:RPC服務器不可用

[英]First-chance exception: The RPC server is unavailable

在開發C#應用程序的某個時候,每當我創建OpenFileDialog時,以下內容就會開始出現在VS Output窗格中:

First-chance exception at 0x75A6C42D (KernelBase.dll) in (myapp).exe: 0x000006BA: The RPC server is unavailable.

我一直在維護該應用程序多年,而且絕對以前從未見過,因此我開始回滾SVN以確定它何時開始。

令人困惑的是,發生和未發生的修訂版本似乎不一致。 如果我走得足夠遠,它永遠不會發生,但是當我可以檢查修訂時,會有一個“區域”,它不會發生,我將檢查另一個修訂,它將,然后,我將返回第一個,時間突然就會過去。 換句話說,我似乎無法確切地確定它何時開始發生。

為了說明這一點,以下是我的測試節選,為清楚起見,本文進行了縮進。 數字是修訂。 對於每個測試,我都會“更新至修訂版”並進行完全重建。

      3977: Exception. This is the most-recent revision.
 3839: OK.  Since it didn't happen, I'll start working my way back up to see when it starts
   3843: OK
    3852: OK
     3890: Exception. So it started between 3852 & 3890.
    3852: Exception. Huh?? I JUST tried 3852, and last time it didn't happen!
3778: OK. Going back this far, I've never seen it happen.
    3852: Exception. I guess I'll start working my way BACK to see when it stops.
   3828: Exception
  3810: OK
   3828: Exception.  Just making sure.
  3810: OK. Just making sure again.
   3828: OK.  What?? 3828 showed the exception last time I tried!
    3852: OK. (but previously it showed the exception)
     3890: Exception

我知道我可以告訴VS不要破壞這些類型的異常,而忽略它們。 但是如前所述,在使用該軟件多年之后,我從未見過它-因此,我想確切確定它們啟動的時間原因 ,而不是視而不見。

這與您的項目無關。 當使用諸如OpenFileDialog之類的外殼對話框時,會將Explorer加載到您的進程中。 這帶來了很多負擔,您可以加載所有的Shell擴展。 自定義資源管理器的類型,它們在對話框中的效果也一樣。

行為不端的情況很常見。 程序員傾向於使用更奇怪的類型。 調試器會告訴您有關此類shell擴展的任何意外信息。

因此,實際上沒有任何錯誤,可以捕獲並處理異常。 資源管理器實施了針對措施,以防止不良的外殼擴展破壞其穩定性並自動禁用它們。 因此,您只有一個me腳的鴨殼擴展程序不起作用,由於它可能有一段時間沒有起作用,您注意到的幾率很低。

調試器可以告訴您哪一個不好。 啟用非托管調試,然后在“調試+異常”對話框中選中“拋出”復選框。 現在,當引發異常時,調試器將停止。 您不會看到任何源代碼,但是可以在“調用堆棧”調試器窗口中找到提示。 它在Windows DLL函數下方的堆棧中某處顯示包含錯誤代碼的DLL名稱。 這個名字應該給你一個提示,那就是麻煩制造者。 SysInternals的AutoRuns實用程序非常適合禁用它們。

暫無
暫無

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

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