У меня есть приложение winform, и наблюдаемая настройка выглядит так:
Form form = new Form();
Label lb = new Label();
form.Controls.Add(lb);
Observable.Interval(TimeSpan.FromSeconds(1))
.Subscribe(l => lb.Text = l.ToString());
Application.Run(form);
Это не работает, так как l => lb.Text = l.ToString()
не будет запускаться в основном потоке, который создал форму, но я не могу понять, как заставить его работать в этом потоке. Я предполагаю, что я должен использовать IObservable.SubscribeOn
, который принимает либо IScheduler
, либо SynchronizationContext
, но я не знаю, как получить синхронный текст основного потока, и единственными планировщиками, которые я смог найти, были статические свойства Scheduler
, например Scheduler.CurrentThread
, Immediate
, NewThread
, TaskPool
и ThreadPool
, ни одна из которых не работала.
Моя версия Rx 1.0.10621.