可以Application.DoEvents()在C#中使用吗?
这个函数是否能够让GUI跟上应用程序的其余部分,就像VB6 DoEvents一样?
我经常看到它提到Thread.Sleep();不应该使用,但我不明白为什么会这样.如果Thread.Sleep();可能造成麻烦,是否有任何替代解决方案具有相同的安全性?
例如.
while(true)
{
doSomework();
i++;
Thread.Sleep(5000);
}
Run Code Online (Sandbox Code Playgroud)
另一个是:
while (true)
{
string[] images = Directory.GetFiles(@"C:\Dir", "*.png");
foreach (string image in images)
{
this.Invoke(() => this.Enabled = true);
pictureBox1.Image = new Bitmap(image);
Thread.Sleep(1000);
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个显示消息队列的表单,并且可以更改此消息的编号.真的我想在消息数量增加时闪烁标签(队列长度)以提高形式可用性.我应该实现自定义控件并使用其他线程或计时器来更改标签的颜色吗?有人实现了这么的功能吗?实现这样的行为的最佳解决方案(更少的资源和更少的性能降级)是什么?
解:
带有计时器的表单组件,可以限制每秒的动画数量,并对外部控件背景颜色实现淡出效果.