我正在设计一个与Harris自动化系统(触发器)交互的Windows服务,我有一个EPG集合,每个EPG项目都有一个类型:A = Adv / S = Series / ....
我的需要:
如果新的触发器带有A型(Adv),则开始计算秒数,一旦此时间跨度> = 2分钟,则从集合中删除关联的EPG。
这可以通过使用某种事件/代理/计时器来执行吗?
由于它与强大的第三部分“Harris”相关,我还需要一个强大的解决方案来执行此操作(触发周期150触发/秒)。
答案 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);
}
此外,您应该覆盖删除方法或其他内容以删除/停止计时器。