Tôi đang cố triển khai một mẫu Observer đơn giản bằng cách sử dụng lớp .net Observable
. Tôi có mã trông như thế này:.net Quan sát 'Quan sát' một chủ đề nền
Observable.FromEventPattern<PropertyChangedEventArgs>(
Instance.User,
"PropertyChanged")
.Where(e => e.EventArgs.PropertyName == "FirstName")
.ObserveOn(Scheduler.ThreadPool)
.Subscribe(search => OnFirstNameChanged(search.EventArgs));
Observable.FromEventPattern<PropertyChangedEventArgs>(
Instance.User,
"PropertyChanged")
.Where(e => e.EventArgs.PropertyName == "LastName")
.ObserveOn(Scheduler.ThreadPool)
.Subscribe(search => OnLastNameChanged(search.EventArgs));
Tôi muốn các nhà quan sát để chạy trên một sợi nền, nhưng tôi muốn họ tất cả chạy trên thread cùng một nền (để thực hiện thực của chúng ta, nó sẽ là quá phức tạp để có mọi người nghe trên một chủ đề khác nhau).
tức là tôi muốn tất cả logic OnXXXChanged
được thực hiện trên một chủ đề khác với chuỗi giao diện người dùng, nhưng thay vì Observing
trên toàn bộ threadpool, tôi muốn đảm bảo chúng chạy đúng thứ tự, trên cùng một chuỗi.
Làm cách nào để sửa đổi các điều trên?
Ngoài ra, trên một lưu ý hơi liên quan, có bất kỳ ví dụ mã mẫu nào tốt bằng cách sử dụng lớp Observable
để triển khai mẫu này không?
Tuyệt vời, cảm ơn bạn rất nhiều! – user981225
EventLoopScheduler triển khai IDisposable để bạn có trách nhiệm xử lý nó. Bạn có thể sử dụng phương thức Sử dụng nhà máy quan sát để gắn kết thời gian tồn tại cho đăng ký. – Fredrick
Trình lập lịch biểu.NewThread không được dùng nữa ngay bây giờ, bạn nên sử dụng NewThreadScheduler.Default thay thế. – Kreshnik