C# 窗口刷新太快 导致控件无效
我现在有一个窗口,这个窗口内的数据在不断的刷新,刷新的速度是1ms一次(很快); 然后我在这个窗口上放了2个按钮;
我的问题来了,当我把窗口打开,让这个窗口开始1ms刷新一次数据的时候,我发现窗口上的其他控件全都“无效了”,只要点击二个按钮中的任意一个,窗口就会死掉(未响应),本来刷新的数据也不刷新了,窗口“死掉”了;
但是如果不点这些按钮,窗口就一直可以正常刷新(没死掉);
请问这是为什么?
是窗口的重画太快了,导致其他控件无法使用吗?
[解决办法]
刷新太快,获取数据太慢,放到异步执行,timer是会阻塞主线程的
[解决办法]
多线程示例:
- C# code
Thread th = new Thread((ThreadStart)delegate() { test(); }); th.Start(); public void test() { int i=0; while (i<100000) { this.Invoke ( (MethodInvoker)delegate() { label1.Text = i.ToString(); } ); i += 100; } }
[解决办法]
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int number = 0;
private void Form1_Load(object sender, EventArgs e)
{
timer1.Enabled = true;
}
private void timer1_Tick(object sender, EventArgs e)
{
button1.Text = "按钮" + number;
number++;
}
private void button2_Click(object sender, EventArgs e)
{
Thread th = new Thread(delegate()
{
NewMethod();
});
th.Start();
}
private static void NewMethod()
{
for (int i = 0; i < 10000; i++)
{
Console.WriteLine(i);
}
}
private void button1_Click(object sender, EventArgs e)
{
timer1.Enabled = false;
}
}