【发布时间】:2014-07-24 04:16:08
【问题描述】:
我有一个计时器滴答事件:
private void timer2_Tick(object sender, EventArgs e)
{
combindedString = string.Join(Environment.NewLine, ListsExtractions.myList);
richTextBox1.SelectAll();
richTextBox1.SelectionAlignment = HorizontalAlignment.Right;
richTextBox1.Text = combindedString;
}
计时器设置为 50000 并且时间一直在一遍又一遍地运行。
现在,当我运行我的程序时,List<string> myList 有例如 3 个项目:
Index 0: Hello world
Index 1: 24/7/2014 21:00
Index 2: http://test.com
50 秒后有两个选项:列表未更改或已更改/更长。 如果未更改,则不执行任何操作,但如果更改则获取最新添加的项目。例如,如果列表现在已更改为此...
Index 0: This is the latest item added in index 0
Index 1: 24/7/2014 22:00
Index 2: http://www.google.com
Index 3: ""
Index 4: Hello world
Index 5: 24/7/2014 21:00
Index 6: http://test.com
...那么我需要做另外两个动作:
第一次运行程序时,检查最近的项目(本例中为
Index 0的字符串)是否包含两个单词/字符串。如果是,则做某事,否则,什么也不做。
但是,如果它确实包含单词/字符串并且我们执行“做某事”,则仅在 50 秒后执行一次;即使索引 0 中再次存在单词/字符串,也不要再这样做。-
50 秒后,如果列表发生变化并且在
Index 0中存在此单词/字符串,请在 50 秒后再次执行一次操作。如果列表没有改变,即使单词/字符串仍然存在于索引 0 中,也不要再做一次。if (rlines[0].Contains("צבע אדום") || rlines[0].Contains("אזעקה")) { timer3.Start(); }
仅当索引 0 中存在单词/字符串之一时,我才想启动 timer3。
如果 50 秒后没有任何变化,请不要再次启动 timer3。
只有在 50 秒或更晚之后列表发生更改并且其中一个单词/字符串再次存在于索引 0 中时,才再次启动计时器 3。
【问题讨论】:
-
我建议使用 ObservableCollection
而不是 List