gpt4 book ai didi

c# - WinRT 上的 Rx - 在 UI 线程上调度

转载 作者:行者123 更新时间:2023-11-30 15:26:46 29 4
gpt4 key购买 nike

我目前刚刚开始使用 Rx,并且发现它到目前为止非常有用。但是,在从异步方法创建可观察对象并使用结果更新 UI 时,我遇到了问题。我(毫不奇怪)通过以下代码收到 RPC_E_WRONG_THREAD 错误:

IDisposable service = null;

service = Observable.FromAsync(fn).Subscribe(videoColl =>
{
foreach (var video in videoColl.Videos)
{
// _videos is an ObservableCollection bound to a GridView's ItemsSource property
_videos.Add(video.SmallImageUrl);
}
});

我看过一些类似的答案,他们建议使用 ObserveOnDispatcher 或 CoreDispatcherScheduler,我似乎都无法使用。

我正在创建一个 Windows 8.1 UAP 应用程序,我通过 Nuget 获得了最新版本 (2.2.5) 的 Rx。我想知道此版本是否缺少 UI 调度程序功能?

最佳答案

通过包含 nuget 包 rx-windowsstoreapps,您应该能够获得 CoreDispatcherSchedulerObserveOnDispatcher

从那里你可以做:

service = Observable.FromAsync(fn)
.ObserveOnDispatcher()
.Subscribe(videoColl =>

如果您从 UI 线程调用 - 我建议您应该在此处创建注定要更新 UI 线程的 Observables。

如果您不能这样做,您将需要获取并保存对 Dispatcher 的引用并使用 .ObserveOn(dispatcher) 代替(其中 dispatcher 被称为引用,从页面或窗口等的 Dispatcher 属性中获取。

关于c# - WinRT 上的 Rx - 在 UI 线程上调度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28728646/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com