2009-10-26 36 views
11

Mã mà tôi có được thừa kế giữ đâm ra khá mạnh mẽ với các lỗi sau (không thay đổi gì cả):Làm thế nào để gỡ lỗi "xử lý an toàn đã bị đóng cửa" lỗi

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() 

này chỉ bị bắt như trước nhà phát triển đã thêm một số AppDomain.UnhandledException Event.

Nếu tôi xóa ứng dụng, ứng dụng chỉ gặp sự cố với thông báo Dr Watson (gửi phản hồi, v.v ...) chứ không phải hộp thoại .NET thông thường (có tùy chọn tiếp tục và theo dõi ngăn xếp).

Tôi đã kiểm tra và nó không liên quan đến Thread.Abort

Làm thế nào để tôi đi về cố gắng để tìm ra nguyên nhân của vấn đề này, vì nó xuất hiện, từ các vết đống, không phải trong mã của ứng dụng?

Trả lời

8

Từ thực tế là System.IO.Ports.SerialStream.EventLoopRunner.WaitForCommEvent() và Microsoft.Win32.UnsafeNativeMethods được gọi là tôi sẽ nguy hiểm khi bạn có thành phần COM có chủ đề nội bộ truy cập vào cổng, ví dụ: cho dữ liệu nối tiếp hoặc TCP/IP.

Dường như chuỗi sẽ phát một ngoại lệ trong chuỗi bắt đầu. Có thể nó đang cố truy cập một cổng không tồn tại hoặc không tồn tại. Điều này không thành công và ngoại lệ không được xử lý và do đó đẩy lùi lại thông qua mã.

Thử đăng nhập thêm thông tin từ sự kiện UnhandledException để có ý tưởng về việc nơi này có thể bắt đầu từ đâu.

+0

này hoạt động giống như sự quyến rũ tôi đã gỡ bỏ tất cả các kết nối USB devises trừ chuột của tôi và nó làm việc ed. Không chắc chắn, tại sao điều này xảy ra. – Nitesh

-1

Thêm mã này trước khi thực hiện cuộc gọi đôi khi có thể giúp đỡ với điều này (nếu lý do là thông tin bảo mật trên thread mới là mất tích:.

AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal); 

Giả sử bạn đang sử dụng Windows authentication nó đảm bảo chủ đề mới được tạo được tạo ra với bối cảnh an ninh ngay

Tài liệu có sẵn ở đây:.. https://msdn.microsoft.com/en-us/library/system.security.principal.principalpolicy(v=vs.110).aspx

+3

Bạn đề xuất điều này ở đâu và điều này liên quan đến lỗi Xử lý an toàn như thế nào? –

+1

Vâng, điều này là vô lý. Mở một kết nối ổ cắm và gửi một tập tin không nên yêu cầu các thiết lập tối nghĩa và đặc biệt như vậy, hãy để một mình chỉ hoạt động để tăng cơ hội nó sẽ làm việc? wtf. đây là những hệ thống xác định. nó không nên thất bại gửi một tập tin 100GB vì một số xử lý an toàn ngẫu nhiên đóng cửa ngày của riêng mình. KHÔNG BAO GIỜ này từng xảy ra và dường như là một cái gì đó được giới thiệu bởi một bản cập nhật cửa sổ gần đây vào cuối năm 2014. – Triynko

+0

Nếu tôi nhớ chính xác, tôi đã thêm nó vào chuỗi mới được bắt đầu ngay sau khi nó bắt đầu. – ScottB

Các vấn đề liên quan