Tôi có ứng dụng GUI kết nối với bộ cảm biến, thu thập dữ liệu và xử lý dữ liệu trong nền sử dụng các chủ đề BackgroundWorker
.Làm cách nào để gỡ lỗi và giải quyết sự cố 'DisconnectedContext'?
Vì nó đứng tôi đang đăng dữ liệu lên GUI bằng cách sử dụng ProgressChanged
mà dường như đang hoạt động tốt để bắt đầu. Tôi đã tăng tốc độ dữ liệu và đã phát hiện ra một vấn đề; nếu phần mềm còn lại để chạy trong vài phút, lượng bộ vi xử lý sẽ tăng lên đến 100% trên cả hai máy tính của tôi và tại thời điểm đó, tôi sẽ gặp lỗi:
Trợ lý gỡ lỗi được quản lý 'DisconnectedContext' đã phát hiện ra sự cố trong 'myapp.exe'. Thông tin bổ sung: Ngữ cảnh 0xe2ba0 bị ngắt kết nối. Phát hành các giao diện từ ngữ cảnh hiện tại (context 0xe2d10). Điều này có thể gây ra tham nhũng hoặc mất dữ liệu.
Tôi đã đọc một số nội dung trên web cho thấy điều này có thể xảy ra nếu ứng dụng GUI không thể bơm tin nhắn đủ nhanh. Tôi đã nhận thấy tôi có thể kích động vụ tai nạn tương tự xảy ra nhanh hơn nếu tôi thay đổi kích thước cửa sổ một cách nhanh chóng (tức là bơm thêm tin nhắn) hỗ trợ lý thuyết tôi nghĩ?
Vì vậy, câu hỏi ở đây là:
- Cho dù bất cứ ai cũng đồng ý với giả thuyết của tôi về thông báo bơm?
- Có giải thích nào khác không?
- Có cách nào tôi có thể chứng minh điều đó (xem số lượng thư trong hàng đợi có thể) không?
- Có phải tất cả các mùi mã xấu này đều cho thấy tôi đang đi sai hướng này không?
Mọi lời khuyên sẽ rất biết ơn.
Tôi đã thử cài đặt MTathread mà dường như chỉ thêm một sự cố không thường xuyên. Thay vào đó, tôi đã sử dụng một cơ chế xếp hàng và fonud một lỗi trong một phần của mã hiển thị đã được điền đầy đủ một 'RichTextBoxControl'. Giữa hai thứ đó, có vẻ như tôi đã giải quyết được vấn đề. Cảm ơn những lời đề nghị. –
Tôi đã thấy điều này xảy ra thêm một vài lần và nó chắc chắn được kích hoạt bằng cách cố gắng gửi quá nhiều yêu cầu 'ProgressChanged' từ luồng sản xuất dữ liệu đến người nghe của nó. –