Tôi đang viết một trình bao bọc xung quanh một thư viện của bên thứ ba và nó có một phương pháp để quét dữ liệu mà nó quản lý. Phương thức này có một phương thức gọi lại mà nó gọi cho mỗi mục trong dữ liệu mà nó tìm thấy.Có thể chuyển các cuộc gọi lại thành IEnumerable
ví dụ: Phương pháp này về cơ bản là: void Scan(Action<object> callback);
Tôi muốn quấn nó và phơi bày một phương pháp như IEnumerable<object> Scan();
Đây có phải là có thể mà không cần đến một chủ đề riêng biệt để thực hiện quét thực tế và một bộ đệm?
Bạn có thể phác thảo luồng chính xác trên thư viện của bên thứ 3 của bạn - có vẻ như nó đã sinh ra nhiều chuỗi. Cũng nên nhớ rằng bạn có thể có một đại biểu Multicast. Ngoài ra, làm cách nào để bạn xác định rằng quá trình quét đã kết thúc? – weismat
Thành thật mà nói, tôi không thể thấy giá trị khi thực hiện việc này. Nếu bạn muốn làm 'foreach (object obj trong scannable.Scan()) {/ * làm điều gì đó với obj * /}', có thực sự tốt hơn 'scannable.Scan (obj => {/ * làm điều gì đó với obj * /}); '? – Flynn1179
@ weismat: không, các chủ đề không sinh sản của nó, về cơ bản nó lặp lại với lưu trữ dữ liệu của nó trong nội bộ và gọi hàm gọi lại cho mỗi bản ghi. – Gareth