2009-09-21 27 views
11

Tôi có một ngoại lệ rất khó chịu mà đóng băng ứng dụng của tôi ném bởi WPF, khi nội dung của popup này dường như có nhiều yếu tố. Trong cửa sổ đầu ra tôi thấy xấp xỉ 50 lần ngoại lệ này.COMException khi tôi sử dụng một Popup trong WPF

'System.Runtime.InteropServices.COMException' xảy ra ở UIAutomationProvider.dll

Sau đó, thỉnh thoảng sau khi đóng băng Tôi có ngoại lệ này:

ContextSwitchDeadlock được phát hiện nhắn: Các CLR không thể chuyển đổi từ ngữ cảnh COM 0x3bd0048 thành ngữ cảnh COM 0x3bd01b8 trong 60 giây. Chủ đề sở hữu ngữ cảnh/căn hộ đích của là hầu hết có khả năng đang chờ đợi không bơm hoặc xử lý hoạt động rất dài mà không cần bơm Windows tin nhắn. Tình huống này thường có tác động tiêu cực về hiệu suất và có thể thậm chí dẫn đến việc ứng dụng trở thành sử dụng không đáp ứng hoặc 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 đơn căn hộ ren (STA) Hiện chủ đề nên sử dụng nguyên thủy bơm chờ đợi (như CoWaitForMultipleHandles) và thường xuyên bơm thông điệp trong dài hoạt động chạy.

Tôi không sử dụng bất kỳ thành phần COM nào trong mã của mình, có ai đó đã gặp sự cố này không?

Deadlock được trình gỡ lỗi phát hiện và không có bất kỳ stacktrace nào. COM ngoại lệ stacktrace là:

{ "Một sự kiện không thể gọi bất kỳ các thuê bao (Exception từ HRESULT: 0x80040201)"}

tại System.Runtime.InteropServices.Marshal. ThrowExceptionForHRInternal (Int32 errorCode, IntPtr errorInfo)

tại MS.Internal.Automation.UiaCoreProviderApi.UiaHostProviderFromHwnd (IntPtr hwnd)

012.

Khi tôi gọi

popup.IsOpen = true 
+0

Tôi gặp sự cố tương tự nhưng tôi không nhớ ngữ cảnh. Bạn có thể đăng các mã có liên quan hoặc một stacktrace? –

+0

Cảm ơn, tôi đã cập nhật câu hỏi của mình! –

+1

Lỗi khủng khiếp có trong WPF 4.0, chỉ cần nói. –

Trả lời

4

Một giải pháp là làm cho Visibility = "thu gọn" về nội dung của các popup, thay vì đóng cửa sổ bật lên, nhưng đó là một chút hacky.

+0

Thực hiện tốt. Cảm ơn bạn. –

1

Tôi gặp phải vấn đề tương tự. tôi đoán nó có liên quan đến một màn hình dell kích hoạt cảm ứng đa điểm gắn liền với máy tính của tôi. khi tôi dừng dịch vụ đầu vào máy tính bảng, ComExceptions biến mất. có lẽ đây cũng là một lựa chọn cho bạn.

1

Tôi đã khắc phục sự cố này bằng cách gỡ cài đặt Bút Wacom và Máy tính bảng cảm ứng và tắt Dịch vụ nhập liệu máy tính bảng. Tôi gặp phải vấn đề này với WPF Popups (TogglePopups, Comboboxes, vv) và Expanders.

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