虽然计时器内的序列在C#中打勾

1 c# timer while-loop

我在C#中有一个1秒的计时器,其中有一个while序列.我的问题是,如果while序列在1秒之前没有完成,计时器是否会打勾,并从头开始重新启动?

代码的一部分在下面,它的作用是循环选定的对象并改变一些东西.因此,如果选择了很多对象并且我需要超过1秒来更改它们,它们都会被更改吗?

PS我真的希望循环被打破; 只会错误地选择大量的物体,但我只是想确保我避免这种可能性.:)

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)
                {....}
            }
         } 
Run Code Online (Sandbox Code Playgroud)

usr*_*usr 5

是的,计时器滴答可以同时发生.这意味着您的计时器必须是线程安全的.

除了 UI计时器类(WinForms/WPF).他们的tick函数在UI线程上运行.有了DoEvents你可以导致重入,即使是另一个避免的理由DoEvents.