button控件 Enable属性 在起线程下出现的奇怪问题。请指教!
我的做法是这样的。Button1按钮
private void Button1_Click(object sender, System.EventArgs e)
{
Button1.Enabled = false;
Thread tnew = new Thread(new ThreadStart(SetFormula));
tnew.Start();//起线程计算我的方法
Button1.Enabled = true;
}
目的就是点击按钮变成不可用同时计算,计算完成后使按钮变为可用。
我没用线程时可以达到我要的效果,但是用了线程后,一闪一下按钮就又变成可以使用了,请问怎么做才能让我既能用线程同时Enable也能按照我的想法进行执行。
------解决方案--------------------public void SetFormula()
{
Thread.Sleep(5000); // 模拟执行的过程
Invoke(new EventHandler(DoInvoke)); // 执行完后恢复
}
private void DoInvoke(object sender, EventArgs e)
{
button1.Enabled = true;
}
private void button1_Click(object sender, EventArgs e)
{
button1.Enabled = false;
Thread tnew = new Thread(new ThreadStart(SetFormula));
tnew.Start();//起线程计算我的方法
}