Я использую следующий код
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();
.
Я пробовал эту опцию, но ошибка остается!