Rx for .NET - Что случилось с Scheduler.Dispatcher?

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

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

Вот код, который я пытаюсь заставить работать с (отремонтированной?) Библиотекой 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) в исходном потоке Dispatcher?

29
задан Factor Mystic 21 July 2013 в 03:00
поделиться

2 ответа

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

42
ответ дан 28 November 2019 в 01:46
поделиться

По состоянию на 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 =>
{
    ...
});
1
ответ дан 28 November 2019 в 01:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: