Tôi có một ứng dụng đa luồng để sinh ra các chủ đề cho một số công cụ phần cứng. Mỗi luồng về cơ bản là một vòng lặp vô hạn (cho toàn bộ thời gian của ứng dụng) thăm dò phần cứng cho dữ liệu mới, và kích hoạt một sự kiện (mà truyền dữ liệu) mỗi khi nó thu thập một cái gì đó mới. Có một lớp người nghe duy nhất hợp nhất tất cả các công cụ này, thực hiện một số phép tính và kích hoạt một sự kiện mới với phép tính này.Sự kiện so với Lợi nhuận
Tuy nhiên, tôi tự hỏi, vì có một người nghe duy nhất, sẽ tốt hơn để vạch ra phương pháp IEnumerable<>
tắt các công cụ này và sử dụng yield return
để trả lại dữ liệu thay vì kích hoạt sự kiện.
Tôi muốn xem nếu ai biết sự khác biệt trong hai phương pháp này. Đặc biệt, tôi đang tìm kiếm độ tin cậy tốt nhất, khả năng tốt nhất để tạm dừng/hủy hoạt động, tốt nhất cho mục đích luồng, an toàn chung, v.v.
Ngoài ra, với phương pháp thứ hai là vẫn có thể chạy vòng lặp IEnumerable
một chủ đề riêng biệt? Nhiều người trong số các công cụ này có phần nào bị ràng buộc CPU, vì vậy đảm bảo mỗi công cụ trên một chủ đề khác nhau là rất quan trọng.
Tôi đã sử dụng Rx trên một dự án mới và thật tuyệt vời. Vấn đề trong trường hợp này là nó sẽ đòi hỏi một đại tu chính của mã di sản, trong đó nó thay đổi toàn bộ cách vấn đề thậm chí còn tiếp cận. Đối với phiên bản chính tiếp theo, tôi đã làm việc này, nhưng nó có vẻ như một nhiệm vụ khó khăn cho một thiết kế lại nhỏ (er). – drharris