当Observable.Context不可用时,如何更新UI?

时间:2009-12-24 08:45:42

标签: system.reactive

我有一个WinFrom应用程序,使用同步方法从URL下载字符串,并使用Rx ToAsync方法使其异步并获得可观察的结果,当结果出现时,我在表单上显示它。

昨天,我将Rx更新到最新版本,并且被告知“Observable不包含Context的定义”。我尝试评论这一行,代码引发了一个异常,即“跨线程操作无效:控制'tbx_Reference'从一个线程访问,而不是创建它的线程。”

我想使用Subscribe方法显示异步结果。我该如何解决这个问题?非常感谢。

public static IObservable<TResult> DoWorkAsync(TParameter parameter,
        Func<TParameter,TResult> actionSync)
    {
        Observable.Context = SynchronizationContext.Current;

        Func<TParameter, IObservable<TResult>> ActionAsync =  actionSync.ToAsync();

        IObservable<TResult> results = from result in ActionAsync(parameter)
                                       select result;

        return results;
    }

1 个答案:

答案 0 :(得分:3)

对于return语句,请尝试:

return results.ObserveOnDispatcher();