我有一个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;
}
答案 0 :(得分:3)
对于return语句,请尝试:
return results.ObserveOnDispatcher();