2013-09-23 35 views
7

Chúng tôi đang sử dụng .NET 3.5 và đã bắt đầu sử dụng Tiện ích mở rộng phản ứng. Chúng tôi đang sử dụng system.Reactive (Phiên bản thời gian chạy: v2.0.50727) tương thích với .NET 3.5.Bộ lập lịch điều phối - Rx

Tôi đang cố gắng quan sát sự kiện trên bộ lập lịch điều phối vì tôi đang sử dụng các điều khiển WPF (đó là trình bao winforms, với điều khiển máy chủ WPF được nhúng), tuy nhiên tôi không thể phát hiện tùy chọn đó trên lớp Scheduler (system.reactive). concurrency.scheduler). Có vẻ như nó có sẵn từ .NET 4.0 trở đi. Câu hỏi của tôi là, làm thế nào để tôi làm việc này trong .NET 3.5? Lưu ý rằng cuộc gọi đang diễn ra bên trong ViewModel của tôi chứ không phải Xem.

Code:

this.ObservePropertyChanged(x => x.Queue) 
       //I cant find scheduler dispatcher option, 
       //there are other options such as current, imeediete, new etc. 
       .ObserveOn(Scheduler.Dispatcher) 
       .Subscribe(RefreshQueues); 

Cảm ơn,

-Mike

Trả lời

1

Tôi nghĩ rằng bạn sẽ có thể sử dụng DispatcherScheduler.Current

+0

AFAIK, hiện tại sẽ chỉ gọi hành động trên chuỗi gọi lại, là một chuỗi nền. Tôi cần thực thi đăng ký trên chuỗi giao diện người dùng và UI bị ràng buộc đang được cập nhật. – Mike

+0

DispatcherScheduler.Current là những gì bạn mô tả. Nó so sánh cuộc gọi với người điều phối ui hiện tại. – Cookingsource

+0

ahh..now tôi nhận được nó .. "dispatcherScheduler" và không phải "Scheduler" .. Tôi đã thử System.Reactive.Concurrency.DispatcherScheduler.Current và kết quả dòng trong lỗi biên dịch.Bạn có chắc chắn điều này có sẵn trong .NET 3.5 không. ? – Mike

5

Bạn sẽ có thể làm với các Winforms RX thư viện tiện ích mở rộng từ http://www.nuget.org/packages/Rx-WinForms/

this.ObservePropertyChanged(x => x.Queue) 
      .ObserveOn(control); 

hoặc nếu bạn đang ở đúng chuỗi.

this.ObservePropertyChanged(x => x.Queue) 
      .ObserveOn(SynchronizationContext.Current); 
8

Cập nhật: dựa trên Rx 2.2.4.0
DispatcherScheduler cho WPF hiện đang di chuyển vào System.Reactive.Windows.Threading namespace.
Sử dụng gói Nuget, tìm Rx-WPF để tải xuống gói và sử dụng DispatcherScheduler.Current thay cho Scheduler.Dispatcher