У меня есть приложение reactiveui/rx. В настоящее время я разрабатываю его настольную часть, поэтому это приложение wpf. Я хотел бы создать каждое окно в отдельном потоке из-за соображений производительности.Как заставить ObserveOn() называть поток?
Вот почему мне нужно ObserveOn будет работать на текущем потоке
someCollection.Changed.Buffer(TimeSpan.FromSeconds(n)).ObserveOn(*should be a link to a current thread*).Subscribe(bufferedItems => {})
также, этот код расположен в портативном Lib, поэтому я не могу использовать класс System.Threading.Thread
Есть ли обходной путь?
Что такое «текущая резьба»? это поток пользовательского интерфейса или это какая-нибудь случайная нить? Если это UI/основной поток, вы можете использовать 'SynchronizationContext'.Current в качестве параметра для вашего ObserveOn', но если это какой-то случайный поток, вам, вероятно, придется писать собственный планировщик (или, по крайней мере, я не знаю того, что делает это). – kha
Я создаю окно в новом потоке, чтобы объект окна имел отдельный диспетчер (в соответствии с этим https://eprystupa.wordpress.com/2008/07/28/running-wpf-application-with-multiple-ui- потоки/). SynchronizationContext.Current не будет работать, поскольку он всегда будет возвращать null, если он вызван не из ui-thread. Я уже пробовал написать свой собственный планировщик, но это задача создания нового потока, а не для повторного использования существующего –