我的C#winform应用中需要无限循环
while(true)
不工作。我听说过计时器,但我不知道如何将其用于无穷循环我想在循环中运行此代码
BackColor = Color.White;
Thread.Sleep(1000);
BackColor = Color.Black;
Thread.Sleep(1000);```
这里我为您制作了一个示例。它将以1秒的周期更改BackColor
。
你可以用_changeBackGround
控制它,也可以用_tmr.Stop()
停止计时器
private readonly Timer _tmr = new Timer { Interval = 1000 };
private bool _changeBackGround = true;
public MainFrom()
{
InitializeComponent();
BackColor = Color.White;
_tmr.Tick += _tmr_Tick;
_tmr.Start();
}
private void _tmr_Tick(object sender, EventArgs e)
{
if (_changeBackGround)
{
if (BackColor == Color.White)
{
BackColor = Color.Black;
}
else
{
BackColor = Color.White;
}
}
}
正如您所注意到的,您不能在WinForms中使用无限循环,因为这不允许UI事件循环运行和处理事情。
所以,
while(true) {
BackColor = Color.White;
Thread.Sleep(1000);
BackColor = Color.Black;
Thread.Sleep(1000);
}
可以重新表述为以间隔1000运行的计时器,其Tick
事件进行
BackColor = BackColor == Color.White ? Color.Black : Color.White;
也就是说,每次刻度运行时,您都会查看背景当前是否为黑色,如果是,则将其变为白色,反之亦然。
当然,你也可以用一个单独的变量来跟踪你想要的颜色。