将新项目添加到List <t> </t>后启动计时器

时间:2012-01-13 16:28:37

标签: c#

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

我的需要:

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

这可以通过使用某种事件/代理/计时器来执行吗?

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

2 个答案:

答案 0 :(得分:1)

您可以尝试使用List<>代替BindingList<>,而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 } } 确实有事件:

示例:

{{1}}

答案 1 :(得分:0)

我会创建一个新的TriggeredList<T>,它继承自List<T>并覆盖Add(T item) - 方法,以便在您刚添加A-Trigger时创建计时器。

add方法应如下所示:

public override void Add (T item)
{
    // code do start timer/whatever
    base.Add(item);
}

此外,您应该覆盖删除方法或其他内容以删除/停止计时器。