Ответ 1
DispatcherScheduler
был перемещен в сборку System.Reactive.Windows.Threading
. Если вы используете NuGet, он находится в Rx-WPF
Я пытаюсь работать через тренинг 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) в исходном потоке Диспетчера?
DispatcherScheduler
был перемещен в сборку System.Reactive.Windows.Threading
. Если вы используете NuGet, он находится в Rx-WPF
По состоянию на 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 =>
{
...
});