У меня есть приложение 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.