Реактивное исключение потока: вызывающий поток должен быть STA, потому что много компонентов пользовательского интерфейса требуют этого - PullRequest
0 голосов
/ 24 октября 2019

Я использую следующий код

    public IObservable<Unit> RunReport()
    {
        return Observable.Start(() =>
        {
            string selectedPath = null;

            //System.Windows.Application.Current.Dispatcher.Invoke(delegate
            //{
                OpenFileDialog ofd = new OpenFileDialog();

                if (ofd.ShowDialog() == DialogResult.OK)
                {
                    selectedPath = ofd.FileName;
                }
                else
                {
                    selectedPath = null;
                }
            //});
        });
    }

, который выдает исключение The calling thread must be STA, because many UI components require this.

Если я раскомментирую 3 строки выше, я не получу исключение, ноэто не похоже на правильный способ исправить это, так как многие другие ответы, которые я видел относительно Observables и проблем с потоками, рекомендуют использовать Observable.Start(() => ...).ObserveOnDispatcher();.

Я пробовал эту опцию, но ошибка остается!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...