解决"线程间操作无效: 从不是创建控件的线程访问它"。
namespace 多线程
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
//不安全
//TextBox.CheckForIllegalCrossThreadCalls = false;
}
void Count()
{
for (int i = 0; i < 5000; i++)
{
int num = Convert.ToInt32(txtNum.Text);
num++;
//如果线程不是创建控件的线程
if (this.txtNum.InvokeRequired)
{
SetTextDelegate st = new SetTextDelegate(SetText);
Invoke(st, new object[] { num.ToString() });
//Console.WriteLine(Thread.CurrentThread.Name);//可查看当前进程名
}
//如果是
else
{
txtNum.Text = num.ToString();
}
}
MessageBox.Show("循环结束" +ts.TotalMilliseconds);
}
private void btnMulThread_Click(object sender, EventArgs e)
{
Thread thread = new Thread(Count);
//thread.name="newThread";
thread.IsBackground = true;
thread.Start();
}
delegate void SetTextDelegate(string text);
void SetText(string text)
{
txtNum.Text = text;
}
}
}