Tôi đã nhận được một thông báo lỗi mà tôi không thể giải quyết. Nó bắt nguồn từ Visual Studio hoặc trình gỡ lỗi. Tôi không chắc liệu điều kiện lỗi cuối cùng là ở VS, trình gỡ lỗi, chương trình của tôi hay cơ sở dữ liệu.
Đây là một ứng dụng Windows. Không phải là một ứng dụng web.
Thông báo đầu tiên từ VS là một hộp bật lên có nội dung: "Không có biểu tượng nào được tải cho bất kỳ khung ngăn xếp cuộc gọi nào. Không thể hiển thị mã nguồn." Khi nhấp vào đó, tôi nhận được: " ContextSwitchDeadlock đã được phát hiện ", cùng với một thông báo dài được sao chép bên dưới.
Lỗi phát sinh trong một vòng lặp quét xuống DataTable. Đối với mỗi dòng, nó sử dụng một giá trị khóa (HIC #) từ bảng làm tham số cho SqlCommand. Lệnh được sử dụng để tạo SqlDataReader trả về một dòng. Dữ liệu được so sánh. Nếu phát hiện lỗi, một hàng được thêm vào DataTable thứ hai.
Lỗi dường như liên quan đến thời gian quy trình chạy trong bao lâu (tức là sau 60 giây), chứ không phải tìm thấy bao nhiêu lỗi. Tôi không nghĩ đó là vấn đề về trí nhớ. Không có biến được khai báo trong vòng lặp. Các đối tượng duy nhất được tạo ra là SqlDataReaders và chúng đang sử dụng các cấu trúc. Thêm System.GC.Collect () không có hiệu lực.
Db là một trang web SqlServer trên cùng một máy tính xách tay.
Không có gizmos ưa thích hoặc tiện ích trên Mẫu.
Tôi không biết bất cứ điều gì trong Proc này khác rất nhiều so với những gì tôi đã làm hàng chục lần trước đây. Tôi đã thấy lỗi trước đây, nhưng không bao giờ trên cơ sở nhất quán.
Có ai có ý kiến gì không?
Lỗi đầy đủ Văn bản: CLR đã không thể chuyển từ bối cảnh COM 0x1a0b88 sang bối cảnh COM 0x1a0cf8 trong 60 giây. Chủ đề sở hữu bối cảnh / căn hộ đích rất có thể là thực hiện chờ không bơm hoặc xử lý một hoạt động chạy rất dài mà không cần bơm các thông điệp Windows. Tình trạng này thường có tác động hiệu quả tiêu cực và thậm chí có thể dẫn đến việc ứng dụng trở nên không đáp ứng hoặc sử dụng bộ nhớ tích lũy liên tục theo thời gian. Để tránh vấn đề này, tất cả các luồng căn hộ đơn luồng (STA) nên sử dụng các nguyên hàm bơm chờ (như CoWaitForMult MônHandles) và thường xuyên bơm tin nhắn trong các hoạt động chạy dài.