Winforms:Observable.Timer抛出InvalidOperationException

时间:2017-09-16 10:35:28

标签: winforms system.reactive

我正在使用 winforms & 被动延期
我在我的表单中使用Observable.Timer。
当计时器触发时,在回调内部尝试在任何winform控件上调用方法时会引发 InvalidOperationException

我该如何解决这个问题?

这是我的代码:

 Observable.Timer(TimeSpan.FromSeconds(0), TimeSpan.FromSeconds(2))
     .Subscribe((e) =>
     {
         XXXXX();
     });

1 个答案:

答案 0 :(得分:3)

您需要使用ObserveOn(form)方法。

  1. 安装nuget包" System.Reactive.Windows.Forms"
  2. ObserveOn(form)方法之前添加Subscribe()

    Observable
        .Timer(TimeSpan.FromSeconds(0), TimeSpan.FromSeconds(2))
        .ObserveOn(this)
        .Subscribe((e) =>
        {
            UpdateProcessStatus();
        });