Как получить контекст синхронизации WinForm или расписание в потоке WinForm

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

12
задан Boris 14 September 2011 в 14:25
поделиться