- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
This question描述了如何确保 IObservable<>.Throttle
通过将 UI 调度程序传递给 Throttle
在 UI 线程上运行.但是,我的 Observables 是在基于 .NET Standard 1.5 的共享库中定义的。有没有等价于DispatcherScheduler.Instance
在 .NET Standard 中,还是应该从使用(WPF/UWP/等)库中注入(inject)调度程序?
最佳答案
.NET Standard 的 System.Reactive 程序集中不存在 DispatcherScheduler 类。
可能的解决方法是将 SynchronizationContextScheduler
与当前 SynchronizationContext
一起使用。当调用 ObserveOn()
时,当您在 UI 线程上时,可观察对象的处理程序将在 UI 线程上运行。
当 ObserveOn()
未在 UI 线程上调用时,整个过程将不起作用。为避免这种情况,您可以创建类似 AppContext
对象的东西,在 UI 初始化发生时对其进行设置,并使其在您的应用程序中可分发。将 SynchronizationContext.Current
保存在此 AppContext
中,您可以在拥有 AppContext
的任何地方创建 UI 线程观察者。
IObservable<EventArgs> myObservable = GetSomeObservableEvents();
var myScheduler = new SynchronizationContextScheduler(SynchronizationContext.Current);
myObservable.ObserveOn(myScheduler).Subscribe(ev =>
{
// some code that should run on UI thread
});
我在 Xamarin.Forms 2.5.0 项目中像这样使用它,我在 .NET Standard 2.0 中有一个包含 ViewModels、Views 等的应用程序项目。
此答案(至少)在这种情况下有效:
关于c# - 在 .NET Standard 库中访问 Dispatcher IScheduler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46859550/
IScheduler接口(interface)提供 public static IDisposable Schedule(this IScheduler scheduler, Action actio
我正在尝试将 ReactiveList 子类化,以便它响应我编写的 ReactiveDictionary 中的更改,而不是父 List。 这是 ReactiveList 子类的类和构造函数签名。 pu
我正在尝试实现一个 IInterruptableJob 接口(interface),以便我可以停止我的工作。 这就是我的工作实现的样子(取自 https://github.com/quartznet/
我正在使用 ReactiveUI 的 ReactiveCommand 功能,它非常酷并且可以达到目的。我遇到的唯一问题是,ReactiveCommand 在实例化时需要一个 IScheduler 实现
This question描述了如何确保 IObservable<>.Throttle通过将 UI 调度程序传递给 Throttle 在 UI 线程上运行.但是,我的 Observables 是在基于
public void Start() { ISchedulerFactory schedFact = new StdSchedulerFactory();
我想使用 Rx 中的 IScheduler.SchedulePeriodic 方法定期运行一些工作。我希望能够通过允许工作接受 CancellationToken 在处理从 SchedulePerio
我是一名优秀的程序员,十分优秀!