1

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

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

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

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;
    }
4

1 回答 1

3

对于您的退货声明,请尝试:

return results.ObserveOnDispatcher();
于 2009-12-26T05:11:25.107 回答