using System.Windows.Forms;
using System.Threading;
namespace TestWinForm
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
delegate void setTextDlg(string v);
delegate void setButton1Status(string v);
private void doSomething()
{
setButton1Status bt1 = new setButton1Status(setButton);
button1.BeginInvoke(bt1, new object[] { "false" });
for (int i = 0; i < 100; i++)
{
setTextDlg st = new setTextDlg(setTxt);
//this.Invoke(st, new object[] {i.ToString() }); // 方法1
label1.BeginInvoke(st, new object[] { i.ToString() }); //方法2
Thread.Sleep(30);
}
setButton1Status bt = new setButton1Status(setButton);
button1.BeginInvoke(bt, new object[] { "true" });
//MessageBox.Show("ok");
}
void setTxt(string v)
{
label1.Text = v;
}
void setButton(string v)
{
button1.Enabled = (v == "true" ? true : false);
}
private void button1_Click(object sender, EventArgs e)
{
//button1.Enabled = false;
Thread th1 = new Thread(doSomething);
th1.Name = "th1";
th1.IsBackground = true;
th1.Start();
}
}
}
标记一下~~以后自己会用到的