我在 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)
{....}
}
}
是的,计时器滴答可以同时发生。这意味着您的计时器必须是线程安全的。
UI 计时器类 (WinForms/WPF) 除外。它们的滴答函数在 UI 线程上运行。使用 DoEvents
,您甚至可以在此处导致重入,这是避免 DoEvents
的另一个原因。
我是一名优秀的程序员,十分优秀!