2009-10-26 69 views
11
我繼承

代碼保持與下面的錯誤(沒有改變)撞車出局而有力:如何調試「安全把手已關閉」的錯誤

System.ObjectDisposedException: Safe handle has been closed 
    at Microsoft.Win32.UnsafeNativeMethods.GetOverlappedResult(
      SafeFileHandle hFile, NativeOverlapped* lpOverlapped, 
      Int32& lpNumberOfBytesTransferred, Boolean bWait) 
    at System.IO.Ports.SerialStream.EventLoopRunner.WaitForCommEvent() 
    at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 
    at System.Threading.ExecutionContext.runTryCode(Object userData) 
    at System.Runtime.CompilerServices.RuntimeHelpers. 
      ExecuteCodeWithGuaranteedCleanup(
      TryCode code, CleanupCode backoutCode, Object userData) 
    at System.Threading.ExecutionContext.RunInternal(
      ExecutionContext executionContext, ContextCallback callback, 
      Object state) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, 
      ContextCallback callback, Object state) 
    at System.Threading.ThreadHelper.ThreadStart() 

這是唯一被抓的前一開發人員添加了AppDomain.UnhandledException Event

如果我刪除它,就能應用崩潰了與沃森博士消息(發送反饋等),而不是一般的.NET對話框(與繼續選項和堆棧跟蹤)。

我已經檢查過這是不相關的Thread.Abort

我該如何去試圖找到這個問題的原因,因爲它出現,從堆棧跟蹤,而不是在應用程序代碼?

回答

8

從System.IO.Ports.SerialStream.EventLoopRunner.WaitForCommEvent()和Microsoft.Win32.UnsafeNativeMethods被引用的事實中,我認爲您有一個COM組件具有訪問端口的內部線程,例如用於串行或TCP/IP數據。

它看起來像線程時它的啓動順序拋出異常。可能是嘗試訪問不可用或不可用的端口。這會失敗,並且異常不會被處理,從而在代碼中傳播回來。

試圖以獲得在這可能從開始的想法記錄從UnhandledException事件的更多信息。

+0

這就像魅力我刪除除了我的鼠標,它所有連接的USB圖謀工作編輯。不知道,爲什麼發生這種情況。 – Nitesh 2015-03-20 08:29:38

-1

將此代碼添加呼叫前有時可以在這方面幫助(如果原因是在新的線程安全信息丟失:

AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal); 

假設你正在使用Windows身份驗證,這確保了新創建的線程用正確的安全上下文中創建

文檔可以在這裏找到:。 https://msdn.microsoft.com/en-us/library/system.security.principal.principalpolicy(v=vs.110).aspx

+3

你在哪裏建議添加它,這與安全句柄錯誤有什麼關係? – 2015-04-28 15:08:04

+1

是的,這是很荒謬的。打開一個套接字連接併發送一個文件不應該需要這種模糊和特殊的設置,更不用說只是爲了增加它的工作機會而起作用?跆拳道。這些是確定性系統。它應該不會因發送一個100GB文件而失敗,因爲一些隨機安全句柄會自行關閉。這個從來沒有使用的情況發生,如果我沒記錯的話,我把它添加到新啓動線程剛開始後的第好象是某種由最近的Windows更新中推出2014年底 – Triynko 2015-05-26 17:22:38

+0

。 – ScottB 2015-06-21 09:11:21