Tôi có một chương trình mà tôi chạy và ở giữa tôi nhận được tin nhắn này:nhắn Strange về chủ đề trong C#
Managed Debugging Assistant 'ContextSwitchDeadlock' đã phát hiện ra một vấn đề trong 'C: \ Documents and Settings \ Lena G \ My Documents \ SchoolStuff \ IR Thông tin \ Trang chủ \ FianlProject \ finalProject \ finalProject \ bin \ Debug \ finalProject.vshost.exe '. Thông tin bổ sung: CLR không thể chuyển đổi từ ngữ cảnh COM 0x3407968 sang ngữ cảnh COM 0x3407ad8 trong 60 giây. Chủ đề sở hữu bối cảnh/căn hộ đích có nhiều khả năng thực hiện việc chờ đợi 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 thông điệp Windows. Tình trạng này thường có tác động tiêu cực về hiệu suất 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 chủ đề căn hộ đơn luồng (STA) nên sử dụng bơm nguyên thủy chờ đợi (như CoWaitForMultipleHandles) và thường xuyên bơm các thông điệp trong các hoạt động chạy dài.
Tôi hiểu rằng nó có liên quan đến thực tế là nó chạy trong 60 giây mà không dừng lại hoặc một cái gì đó như thế? Làm thế nào nó là một vấn đề? Tôi cũng đặt [STAThread] trước phần chính của chương trình bởi vì nếu tôi xóa nó thì nó sẽ hiển thị cho tôi thông báo này:
Một ngoại lệ không được loại trừ 'System.Threading.ThreadStateException' xảy ra trong System.Windows.Forms.dll Thông tin bổ sung: Chủ đề hiện tại phải được đặt thành chế độ căn hộ đơn lẻ (STA) trước khi có thể thực hiện các cuộc gọi OLE. Đảm bảo rằng chức năng chính của bạn có STAThreadAttribute được đánh dấu trên đó. Ngoại lệ này chỉ được nâng lên nếu trình gỡ lỗi được đính kèm vào quy trình.
Bất kỳ ai biết cách tôi có thể giải quyết vấn đề này?
Cảm ơn trước,
Lena
Nếu tôi tắt công tắc bối cảnh, có thể gây hại gì không? Tôi đang sử dụng Visual Studio 2008 .. –
Sẽ không có gì xảy ra. Bạn thực sự có thể có một bế tắc. Bạn sẽ tìm ra đủ nhanh, chương trình của bạn sẽ đóng băng. –