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

how to force ObserveOn() on calling thread?

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

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

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

此外,此代码位于可移植库中,这就是我无法使用 System.Threading.Thread class

的原因

有什么解决方法吗?

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

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

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