Tôi đang viết một chương trình mà một chủ đề cần đẩy các mục lên hàng đợi và một hoặc nhiều chủ đề xuất hiện các mục ra khỏi hàng đợi và xử lý chúng. Để tránh hết bộ nhớ, tôi muốn chuỗi nhà sản xuất ngủ khi hàng đợi đầy. Một số mục có mức độ ưu tiên cao hơn các mục khác, vì vậy tôi muốn những mục đó được xử lý trước tiên. Nếu các mục có cùng mức độ ưu tiên, tôi muốn mục được thêm trước tiên sẽ được xử lý trước tiên.Hàng đợi ưu tiên có thể theo dõi chuỗi an toàn được đệm?
Tôi muốn hiển thị 100 mục hàng đầu hoặc trong WPF DataGrid, vì vậy nó cũng cần được truy cập bằng một chuỗi giao diện người dùng. Sẽ rất tuyệt nếu nó có thể thông báo cho chuỗi giao diện người dùng rằng đã có bản cập nhật, tức là, triển khai IObservable.
Có lớp chứa nào sẽ làm tất cả điều này không?
Đối với điểm thưởng, tôi chắc chắn rằng toàn bộ hàng đợi không cần phải bị khóa cả khi đang enqueing và dequeing.
Triển khai .NET 4 là tốt.
BlockingCollection http://msdn.microsoft.com/en-us/library/dd997371.aspx âm thanh hứa hẹn ... nhưng nó không đề cập đến bất kỳ điều gì về các ưu tiên. Nó nói rằng nó có thể đóng gói bất cứ thứ gì thực hiện IProducerConsumerCollection ... có một trong số đó là hàng đợi ưu tiên không? – mpen
Xem ví dụ này http://msdn.microsoft.com/en-us/library/dd460690.aspx –
Các tác vụ FWIW có thể được chuyển thành các quan sát Rx. ;) –