Tôi đang xem xét triển khai API nơi nhiều hoạt động có thể chạy đồng thời. Các tổ chức sự kiện dựa trên mẫu không đồng bộ đã được khuyến cáo của MS:Một số giải pháp thay thế cho Mẫu không đồng bộ dựa trên sự kiện là gì?
// Asynchronous methods.
public void Method1Async(string param, object userState);
public event Method1CompletedEventHandler Method1Completed;
public void CancelAsync(object userState);
public bool IsBusy { get; }
Tuy nhiên điều này dường như một chút vụng về được - nó đòi hỏi khách hàng để lọc ra trả lời đó không có nghĩa là cho họ và ngắt kết nối xử lý sự kiện khi thực hiện xong, vv Những gì tôi nghĩ là một cái gì đó giống như:
AsyncOperation1(string parm, Action<T> callback)
Mỗi khách hàng nhận được kết quả riêng của mình được gửi trực tiếp. Tôi gặp khó khăn trong việc tìm ra cách hỗ trợ hủy bỏ thanh lịch. Tôi đoán điều hiển nhiên là cho AsyncOperation1 trả lại một số loại mã thông báo có thể được chuyển vào một phương thức CancelAsync. Tôi muốn tìm hiểu thêm về các mẫu không đồng bộ khác đang được sử dụng phổ biến trong. Net hoặc bằng các ngôn ngữ khác có thể được dịch một cách thích hợp
Tôi nghĩ bạn một mô tả một cách để thích nghi và tồn tại tổ chức sự kiện có trụ sở API không đồng bộ đến một IObservable. Làm thế nào một trong những đi về việc thực hiện một API mới từ đầu? – Shane
Không, bạn có thể sử dụng Rx để thực hiện các hoạt động async của riêng bạn và cung cấp các triển khai của IObservable cho khách hàng của bạn để họ đăng ký. Hãy xem http://msdn.microsoft.com/en-us/library/hh211669(v=VS.103).aspx để biết thông tin trên giao diện ISubject –
Matt
Tuy nhiên, có rất nhiều, nhiều phương pháp hiện có để tạo sự kiện bạn có thể sử dụng để xây dựng các quan sát ở mức cao hơn việc triển khai các giao diện – Matt