如何在调用线程上强制ObserveOn()?

时间:2016-06-13 12:55:39

标签: c# wpf multithreading system.reactive reactiveui

我有一个reactiveui / rx应用程序。目前,我正在开发它的桌面部分,因此它是一个wpf应用程序。由于性能原因,我想在其单独的线程中创建每个窗口。

这就是为什么我需要在当前线程上运行ObserveOn

someCollection.Changed.Buffer(TimeSpan.FromSeconds(n)).ObserveOn(*should be a link to a current thread*).Subscribe(bufferedItems => {})

另外,这段代码位于一个可移植的lib中,这就是为什么我不能使用System.Threading.Thread类

有解决方法吗?

1 个答案:

答案 0 :(得分:2)

如果您可以捕获Dispatcher,则可以将其提供给DispatcherScheduler

var currentDispatcher = Dispatcher.CurrentDispatcher;
var scheduler = new DispatcherScheduler(currentDispatcher);

Observable.Empty<int>().ObserveOn(scheduler)....