我已经创建了一个定时器数组并启动了所有这些并且一切都很好但是在调试模式下我发现如果我在数组中启动一个定时器然后再启动另一个定时器,则前一个定时器停止。我应该如何保持更多的计时器运行?我虽然有动态结构,但我不喜欢它:D
我正在使用Windows.Forms.Timer
在课堂上我宣布
Timer[] timeSchedule = new Timer[0];
用它启动它们。它需要listview中的数组大小和加载listview时创建的字符串的间隔。我希望你会发现它是可以理解的。
private void TimerRefresh()
{
string[] TempArray = new string[lvSchedule.Items.Count];
timeIntervals = new int[lvSchedule.Items.Count];
TempArray = intervals.Split(Convert.ToChar(","));
for (int i = 0; i < timeSchedule.Count(); i++)
{
timeSchedule[i] = new Timer();
timeIntervals[i] = Convert.ToInt32(TempArray[i]);
if (timeIntervals[i] == 0)
{
timeSchedule[i].Interval = 23;
}
else
{
timeSchedule[i].Interval = timeIntervals[i];
timeSchedule[i].Tag = lvSchedule.Items[i].Text;
}
}
}
我正在用简单的
运行它timeSchedule[lvSchedule.SelectedItems[0].Index].Start();
答案 0 :(得分:0)
在计时器计时功能中,如果您希望在设定的间隔后再次点火,请重新启用计时器。发布计时器刻度代码
答案 1 :(得分:0)
Stop()
功能或将其Enable
更改为false来停止计时器。Tick
事件处理程序,因此请在循环timeSchedule[i].Tick += OnTimerTick
中分配它们。使用System.Timers.Timer或System.Threading.Timer代替当前的System.Windows.Forms.Timer
,因为:
一个。 Timer.Tick处理程序将在UI线程上执行,这将导致UI在执行tick中的代码时没有响应。
湾System.Windows.Form.Timer
具有较低的准确度 limited to accuracy of 55 milliseconds
,并且您在代码中使用23
,但这并不意味着它在使用时会是23
System.Timers.Timer
但它有更好的解决方案..
答案 2 :(得分:0)
感谢我在这里的每一个答案我已经解决了问题......这都是我的错:(当我在Form激活的triger中对这个数组进行语义化时,我没有意识到我在做什么...现在它已经解决了顺便说一句...感谢有关这个计时器准确性的建议......(如果这个时间对我来说是开始还是没有使用23ms,那么,我会记住它,有一天我会找到它这里的所有内容都很有用:))