Подтвердить что ты не робот

Rx для .NET. Что случилось с Scheduler.Dispatcher?

Я пытаюсь работать через тренинг Dan Sullivan Rx Extensions на PluralSight. Это отличный материал, но, к сожалению, Rx, похоже, уже изменен, хотя курс был опубликован только месяц назад.

Большинство изменений тривиальны для разработки (переход от трех DLL к одной dll, изменение используемых пространств имен и т.д.), но я изо всех сил пытаюсь понять, что я должен использовать вместо примера Scheduler.Dispatcher в Dan. Я не вижу ничего очевидного в свойствах, доступных в Планировщике.

Вот код, который я пытаюсь получить с помощью библиотеки (refactored?) Rx (текущая стабильная версия v1.0.10605)

var query = from number in Enumerable.Range(1, 25) select StringWait(number.ToString());
var observableQuery = query.ToObservable(Scheduler.ThreadPool);
observableQuery.ObserveOn(Scheduler**.Dispatcher**).Subscribe(n => Results.AppendText(string.Format("{0}\n", n)));

Что мне следует использовать для вызова кода Observer (Results.AppendText) в исходном потоке Диспетчера?

4b9b3361

Ответ 1

DispatcherScheduler был перемещен в сборку System.Reactive.Windows.Threading. Если вы используете NuGet, он находится в Rx-WPF

Ответ 2

По состоянию на 2016-11-25 эта ссылка RX-XAML.

К сожалению, Microsoft отказала RX v2.2.5 в пользу RX v3.1.0, которая полностью перекрестная платформа. Тем не менее, библиотеки кросс-платформ не поддерживают WPF. Это означает, что теперь трудно найти пакет NuGet, который работает с WPF.

Чтобы обойти это, если вы используете WPF + .NET 4.5, установите любой пакет NuGet с зависимостью от RX-XAML. Например, reactiveui-blend зависит от RX-XAML v2.2.5, поэтому теперь это будет работать:

setClipboard.ObserveOnDispatcher().Subscribe(o =>
{
    ...
});