- 2
- 0
- 约2.81千字
- 约 6页
- 2019-03-06 发布于浙江
- 举报
HYPERLINK /huangxincheng/p/4556755.html 由一个订单推送想到了ObservableCollection的神奇用法
? ? ?最近在做taobao的一个卖家应用,需要订阅taobao的订单推送,示例代码如下:
?
看到上面的OnMessage场景之后,我突然就鬼使神差的在想最近写的一个服务,其中的一个功能是需要定时的轮询一个集合,这样可以方便的把数据取出来,但是
轮训对我来说是被迫的,我急迫需要一种机制对一个集合的数据进行监控,比如List,Dictionary等等,这样我就很方便的对数据进行后续处理,而不是我定时的去轮
训一个集合,然后我就想到了wpf里面有一个玩法叫做“属性依赖”,然后就想到了今天要说的“ObservableCollection”集合,下面我们就来看看这个集合的玩法。
?
一:先看玩法
首先我对集合进行Add和Remove操作,并且给他注册个change事件,然后用工作线程去执行change事件的逻辑,看看给我什么反馈,神奇的效果即刻开始。
class Program
{
static void Main(string[] args)
{
ObservableCollectionstring list = new ObservableCollectionstring() { 1 };
list.CollectionChanged += list_CollectionChanged;
for (int i = 0; i 1000; i++)
{
if (i % 3 == 1)
{
list.RemoveAt(0);
}
else
{
list.Add(i.ToString());
}
}
Console.WriteLine(全部结束!!!);
Console.Read();
}
static void list_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
//为了不阻止主线程Add,事件用 “工作线程”处理
Task.Factory.StartNew((o) =
{
var obj = o as NotifyCollectionChangedEventArgs;
switch (obj.Action)
{
case NotifyCollectionChangedAction.Add:
Console.WriteLine(当前线程:{0}, 操作是:{1} 数据:{2}, Thread.CurrentThread.ManagedThreadId, obj.Action.ToString(), obj.NewItems[0]);
break;
case NotifyCollectionChangedAction.Move:
break;
case NotifyCollectionChangedAction.Remove:
Console.WriteLine(当前线程:{0}, 操作是:{1} 数据:{2}, Thread.CurrentThread.ManagedThreadId, obj.Action.ToString(), obj.OldItems[0]);
break;
case NotifyCollectionChangedAction.Replace:
您可能关注的文档
最近下载
- 威海某项目勘察报告sdtg.doc VIP
- 球墨铸铁管施工技术要点与质量控制.docx VIP
- 采卤盐井项目环评环境影响报告书.doc
- 四川省2025年高职单招文化素质考试(普高类)信息技术和通用技术试卷(含答案).pdf
- 学生实习安全协议书(学生与学校、企业签)(5篇范例).docx VIP
- 放射物理与防护 放射治疗剂量学 放射治疗剂量学.ppt VIP
- 2026年中国美甲贴行业研究分析报告.docx
- 开展2026年春节复工复产工作实施方案 .docx
- 黑色专题报告(双焦):海外焦煤供应系列(一),澳洲焦煤知多少.pdf VIP
- 2025年上海市教师职称考试(体育与健康)历年参考题库含答案详解(5套卷.docx VIP
原创力文档

文档评论(0)