在将新项目添加到列表<;T>;

本文关键字:lt gt 列表 新项目 添加 | 更新日期: 2023-09-27 18:20:10

我正在设计一个与Harris自动化系统(触发器)交互的windows服务,里面有一个EPG集合,每个EPG项目都有一个类型:a=Adv/S=Series/。。。。

我的需求:

如果新触发器带有类型A(Adv),则开始计算秒数,一旦此时间跨度>=2分钟,则从集合中删除关联的EPG。

这是否可以通过使用某种事件/委派/计时器来执行?

由于它与强大的第三部分"哈里斯"有关,我还需要一个强大的解决方案来执行此操作(触发周期150触发/秒)。

在将新项目添加到列表<;T>;

您可以尝试使用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方法或其他方法来删除/停止计时器。