如何在添加到列表中的任何元素上订阅列表? [英] How can i subscribe list on any element added to list?
本文介绍了如何在添加到列表中的任何元素上订阅列表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
你好,
我需要订阅List< T>在添加到列表的任何元素上。我尝试下面的代码,但它不起作用。 (因为订阅已完成,因此初始列表为空)
I need subscribe List<T> on any element added to list. I tried below code but it's not working. (because subscribe completed so initial list is empty)
如何用rx实现我的问题?
How can i implement my problem with rx?
private void button1_Click(object sender, EventArgs e)
{
List<Exception> errors = new List<Exception>();
var observer = errors.ToObservable();
observer.Subscribe(err =>
{
_txtSummary.AppendText(Environment.NewLine);
_txtSummary.AppendText(err.ToString());
});
for (int i = 0; i < 1000; i++)
{
Thread.Sleep(100);
if (i % 3 == 0)
errors.Add(new Exception("yov"));
}
}
OğuzhanEren
Oğuzhan Eren
推荐答案
我解决了我的问题(除了:非法交叉线程错误) 如下所示但我不喜欢这个解决方案。 (SelectMany with Interval)
I solve my problem (except: illegal cross thread error) like below but i don't like this solution. (SelectMany with Interval)
private void button1_Click(object sender, EventArgs e)
{
List<exception> errors = new List<exception>();
var observer = from t in Observable.Interval(TimeSpan.FromMilliseconds(100))
from item in errors.ToObservable()
select item;
observer.Subscribe(err =>
{
_txtSummary.AppendText(Environment.NewLine);
_txtSummary.AppendText(err.ToString());
});
for (int i = 0; i < 1000; i++)
{
Thread.Sleep(100);
if (i % 3 == 0)
errors.Add(new Exception("yov"));
}
}</exception></exception>
我需要解决 现在非法交叉线程错误?
I need solve illegal cross thread error now?
这篇关于如何在添加到列表中的任何元素上订阅列表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文