首页 / C# / c# – 为此提供RX简单示例帮助
c# – 为此提供RX简单示例帮助
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 为此提供RX简单示例帮助,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1852字,纯文字阅读大概需要3分钟。
内容图文
我为此搜索了一个示例,但找不到清楚解释如何使用RX进行设置的内容:
我有这个要求……
>在WPF应用程序中,我有一个列表框
>调度程序计时器例程每隔2秒向本地列表添加一些随机数
>现在我想设置一个observable / observer来观察这个List< int>因为它不断积累,并将最新添加的数字添加到列表框的项目集合中.
听起来非常简单,我已经在后台线程中完成了第三位(没有RX,但在列表< int>上有标准查找)并且很容易添加到列表框中.
当没有背景工作者等尝试做同样的事情并且只使用RX时,我被卡住了.
为可能的愚蠢问题道歉(对于那里的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;
你去了 – 你现在有一个列表框,从按时间指定的时间间隔生成的随机数更新.
就这么简单.我希望这有帮助.
内容总结
以上是互联网集市为您收集整理的c# – 为此提供RX简单示例帮助全部内容,希望文章能够帮你解决c# – 为此提供RX简单示例帮助所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。