在将新项目添加到列表<;T>;
本文关键字:lt gt 列表 新项目 添加 | 更新日期: 2023-09-27 18:20:10
我正在设计一个与Harris自动化系统(触发器)交互的windows服务,里面有一个EPG集合,每个EPG项目都有一个类型:a=Adv/S=Series/。。。。
我的需求:
如果新触发器带有类型A(Adv),则开始计算秒数,一旦此时间跨度>=2分钟,则从集合中删除关联的EPG。
这是否可以通过使用某种事件/委派/计时器来执行?
由于它与强大的第三部分"哈里斯"有关,我还需要一个强大的解决方案来执行此操作(触发周期150触发/秒)。
您可以尝试使用BindingList<>
而不是List<>
,它确实有事件:
示例:
BindingList<yourClass> eventList = new BindingList<yourClass>();
public Form1() {
InitializeComponent();
eventList.ListChanged += new ListChangedEventHandler(eventList_ListChanged);
}
void eventList_ListChanged(object sender, ListChangedEventArgs e) {
if (e.ListChangedType == ListChangedType.ItemAdded) {
// something was added
}
}
我会创建一个新的TriggeredList<T>
,它继承自List<T>
,并覆盖Add(T item)
-方法来创建一个计时器,以防您刚刚添加了一个a-Trigger。
add方法应该是这样的:
public override void Add (T item)
{
// code do start timer/whatever
base.Add(item);
}
此外,您应该覆盖Remove方法或其他方法来删除/停止计时器。