2008-10-13 29 views
6

Có vẻ như Microsoft đã có ý tưởng tuyệt vời với ObservableCollection. Chúng rất tuyệt vời để gắn kết và siêu nhanh trên giao diện người dùng.Sử dụng ObservableCollection <T> với Chủ đề nền

Tuy nhiên, yêu cầu một ngữ cảnh chuyển sang Chủ đề điều phối mỗi lần bạn muốn tinh chỉnh nó có vẻ hơi nhiều. Có ai biết các phương pháp hay nhất để sử dụng chúng không? Có đơn giản là để đưa một ICollection như một đối tượng thông báo trong lớp nghiệp vụ, sau đó tạo ObservableCollection trong lớp UI? Làm thế nào để bạn xử lý các bản cập nhật cho bộ sưu tập trên giao diện người dùng?

Trả lời

2

Đang cập nhật ObservableCollection trên chuỗi giao diện người dùng thực sự gây ra nhiều nút cổ chai cho ứng dụng của bạn? Nếu không, hãy cập nhật nó trên chuỗi giao diện người dùng. Hãy nhớ rằng, nó không thực sự là một chuyển đổi ngữ cảnh đang xảy ra khi bạn chạy một cái gì đó với Dispatcher - thay vào đó, bạn chỉ đơn giản là gửi một công việc đến thread UI, đó là một thread đang chạy, mà hệ điều hành sẽ chuyển sang ngữ cảnh tại một số điểm anyway . Chuỗi giao diện người dùng kéo công việc đã gửi của bạn ra khỏi hàng đợi nội bộ và thực thi nó. Bạn không bắt buộc phải chuyển ngữ cảnh.

+0

Nó không phải là một chuyển đổi ngữ cảnh trừ khi nó là một hoạt động đồng bộ – Amsakanna

+0

Nó luôn luôn là một chuyển đổi ngữ cảnh khi hệ điều hành chuyển từ chuỗi này sang luồng khác, ý của bạn là gì? –

1

Bạn có thể sử dụng cũ tốt BackgroundWorker cũng trong WPF (như trong Windows Forms). Nó sẽ áp dụng cho các mô hình luồng của WPF và cũng cung cấp một trừu tượng tốt đẹp.

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