2011-07-30 11 views
7

Tôi gặp sự cố lạ với chương trình của mình. Tôi đang phát triển một ứng dụng biểu mẫu cửa sổ. Khi tôi gỡ lỗi nó thông qua Visual Studio (F5) nó hoạt động hoàn toàn chính xác, nhưng khi tôi chạy nó thực thi nó treo và cho tôi "Một ngoại lệ unhandled loại 'System.ObjectDisposedException' xảy ra trong mscorlib.dll".Sự cố chương trình với System.ObjectDisposedException

Tôi đã cố gắng đặt cấp cao nhất (trên chức năng ngoài cùng của tôi) thử/bắt để bắt ngoại lệ này, nhưng chương trình vẫn bị treo. Tôi đang thiếu gì ở đây?

Tôi đã không tải mã lên vì tôi phải tải lên toàn bộ mã để bạn xem vấn đề ở đâu.

+1

Vấn đề là khi gỡ lỗi GC không thu thập các đối tượng được xử lý thường xuyên. Một nơi nào đó trong mã của bạn, bạn cố gắng truy cập một đối tượng mà bạn không còn tham chiếu hợp lệ nữa. Nó đã được xử lý. Không thể nói chính xác nơi không có mã nào đó. –

+2

Nếu anh ta cố gắng truy cập vào nó, rõ ràng anh ta phải có một tham chiếu đến nó, và do đó không có GC. –

Trả lời

3

Wow, một ObjectDisposedException không bị chặn bởi một khối catch cấp cao nhất?

Tôi không chắc chắn những gì tôi sẽ làm trong trường hợp này - rõ ràng, bạn muốn xem dấu vết ngăn xếp và tìm ra chỉ là những gì nó đã được xử lý. Có một vài ngoại lệ không thể bắt được, nhưng đây không phải là một trong số đó. Tôi có thể đính kèm một xử lý cho sự kiện AppDomain.UnhandledException, và xem nếu tìm thấy bất cứ điều gì.

3

Nếu bạn có thể nhận được dấu vết ngăn xếp của ngoại lệ, nó sẽ giúp bạn gỡ lỗi nguyên nhân gốc. Bạn có thể thấy cửa sổ Call Stack hữu ích cho việc này. Xem hướng dẫn tại đây:

Bạn cũng có thể muốn tắt tùy chọn "Chỉ mã của tôi" để gỡ lỗi trong Visual Studio. Điều này có thể cung cấp cho bạn thông tin gỡ lỗi ngoại lệ tốt hơn. Làm theo hướng dẫn (để disable) ở đây:

+0

Cập nhật liên kết: [Cách thực hiện: Bước vào Chỉ Mã của tôi] (https://msdn.microsoft.com/en-us/library/h5e30exc (v = vs.100) .aspx) – OriolBG