gpt4 book ai didi

c# - 有没有办法将一个计时器用于多个事件?

转载 作者:行者123 更新时间:2023-11-30 17:43:38 25 4
gpt4 key购买 nike

我在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com