c# – 为此提供RX简单示例帮助
我为此搜索了一个示例,但找不到清楚解释如何使用RX进行设置的内容:
我有这个要求…… >在WPF应用程序中,我有一个列表框 听起来非常简单,我已经在后台线程中完成了第三位(没有RX,但在列表< int>上有标准查找)并且很容易添加到列表框中. 为可能的愚蠢问题道歉(对于那里的RX专家),但请帮助我们如何使用RX完成此WPF. 谢谢. 解决方法
使用Rx时,您需要牢记IEnumerable< T>之间的对偶性. &安培;的IObservable< T> (以及IEnumerator< T>& IObserver< T>).
您应该始终寻找实现IEnumerable< T>的对象.并考虑如何用IObservable替换它们< T>. 在你的问题中,你说你有一个计时器将一些数字添加到List< int>您要观察并将新数字添加到列表框中.所以我会考虑用IObservable< int>替换列表.这里的技巧不是关于观察列表(或ObservableCollection< int>)而是关于使用Rx作为代码的核心部分. 所以,这是一个简单的例子. 从问题中描述的核心元素开始: var dispatchTimer = new DispatcherTimer(); var random = new Random(); var listBox = new ListBox(); 从dispatchTimer创建一个observable: IObservable<IEvent<EventArgs>> ticks = Observable.FromEvent( h => dispatchTimer.Tick += h,h => dispatchTimer.Tick -= h); 查询observable以创建一个新的随机数可观察量: IObservable<int> randomNumbers = from tick in ticks select random.Next(1,11); 现在,订阅可观察的随机数以更新列表框: _updateListBoxSubscription = randomNumbers.ObserveOnDispatcher().Subscribe(n => listBox.Items.Add(n)); .ObserveOnDispatcher()调用将确保将数字添加到UI线程上的列表框中. 您需要定义一个字段或属性来保存对订阅的引用,以便不会收集垃圾.这正是添加处理程序时事件处理程序字段所执行的操作,但是对于Rx,您必须明确地执行此操作. private IDisposable _updateListBoxSubscription; 你去了 – 你现在有一个列表框,从按时间指定的时间间隔生成的随机数更新. 就这么简单.我希望这有帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |