【发布时间】:2013-10-15 13:18:20
【问题描述】:
我在 C# 中有一个 1 秒的计时器,其中有一个 while 序列。我的问题是,如果 while 序列在 1 秒之前没有完成,计时器会滴答作响,然后从头开始重新开始 while 吗?
代码的一部分如下,它的作用是循环选择对象并改变一些东西。那么,如果选择了很多对象,并且我需要超过 1 秒的时间来更改它们,它们会全部更改吗?
附:我实际上希望打破循环;大量对象只会被错误选择,但我只是想确保避免这种可能性。 :)
private void timer1_Tick(object sender, EventArgs e)
{
TSM.ModelObjectEnumerator myEnum = null;
myEnum = new TSM.UI.ModelObjectSelector().GetSelectedObjects();
while (myEnum.MoveNext())
{
if (myEnum.Current != null)
{....}
}
}
【问题讨论】:
-
如果你想确保你的任务在你允许计时器再次滴答之前完成,你为什么不使用只滴答一次的计时器呢?或者在滴答开始时停止计时器,然后在滴答结束时重新启动。
-
你说的是哪个定时器? .Net fw中有很多定时器
-
我忘了在最初的问题中提到:我希望 while 循环被中断。选择所有对象或选择大量对象只会错误地发生,这就是为什么我要中断while。
-
听起来你想在
Timer Tick处理之前验证所选对象的类型/数量。
标签: c# timer while-loop