Как собрать проект с этим кодом без ошибки

using System.Reactive.Linq;
using System.Reactive.Concurrency;

namespace WinFormsApp1
{
  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
      Load += Form1_Load;
    }

    private void Form1_Load(object? sender, EventArgs e)
    {
      Observable.Interval(TimeSpan.FromSeconds(1))
        .ObserveOn(this) //тут ОШИБКА: не удается преобразовать из "WinFormsApp1.Form1" в "System.Reactive.Concurrency.IScheduler".
        .Subscribe(x => label1.Text = DateTime.Now.ToLongTimeString());
    }
  }
}

Ответы (2 шт):

Автор решения: Tigran Grigoryan

В вашем коде возникает ошибка, потому что метод ObserveOn требует объект типа IScheduler, который предоставляет планировщик для обработки событий Rx.

Немножко поменял ваш код, должно работать.

namespace WinFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Load += Form1_Load;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Observable.Interval(TimeSpan.FromSeconds(1))
                .ObserveOn(DispatcherScheduler.Current) // Здесь используем DispatcherScheduler
                .Subscribe(x => 
                {
                    label1.Invoke((Action)(() => label1.Text = DateTime.Now.ToLongTimeString()));
                });
        }
    }
}
→ Ссылка
Автор решения: Леонид Дубовик

Чтобы не было ошибки (для проекта созданного в WinForm) нужно создать проект не в .NET 7.0 а в .NET Framework.

→ Ссылка