作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 C# .NET 3.5当定时器超时并且执行事件处理程序时会发生什么?计时器不复存在了吗?我可以在一个计时器上的不同时间注册多个事件,并期望它们一个接一个地触发吗?
最佳答案
您可以将计时器设置为仅触发事件一次或继续触发(Timer.AutoReset 属性)。是的,您可以在一个计时器上注册多个不同的事件处理程序,但我不知道有什么方法可以知道它们将触发什么顺序。如果这对您很重要,请设置一个处理程序,然后让该处理程序调用其他处理程序。如果你想做的是调用不同的处理程序,每次计时器关闭时,我建议设置一个单独的处理程序,它保留一个枚举,指示要调用的函数并在每次被计时器调用时递增它。要调用同一个处理程序来“迭代”参数列表,在每个时间间隔过去后,我会有一个参数数组或列表,处理程序只会增加一个计数器或使用该列表。
using System.Timers;
public class MyTimedDelete {
private static List<int> ListOfIds=null;
private static System.Timers.Timer myTimer=null;
public static void AddIdToQueue(int id)
{
if (ListOfIds == null)
{
ListOfIds = new List<int>();
myTimer = new System.Timers.Timer(2000);
myTimer.Elapsed += OnTimedEvent;
}
ListOfIds.Add(id);
if (ListOfIds.Count==1)
{
myTimer.Start();
}
}
private static void OnTimedEvent(Object source, ElapsedEventArgs e)
{
deleteItem(ListOfIds[0]);
ListOfIds.RemoveAt(0);
if (ListOfIds.Count == 0) {
myTimer.Stop();
}
}
}
关于c# - 有没有办法将一个计时器用于多个事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30602201/
我是一名优秀的程序员,十分优秀!