如下是一个示例,你可以照着修改一下。
private void button1_Click(object sender, EventArgs e) { ThreadPool.QueueUserWorkItem(_ => DoWork()); } void DoWork() { for (int i = 0; i < 10; i++) { Thread.Sleep(1000); this.Invoke(new Action(() => textBox1.Text = DateTime.Now.ToString())); } }
MethodInvoker m0 = delegate()
{
你要执行的代码
};
try
{
BeginInvoke(m0);
}
catch
{
}
private void button1_Click(object sender, EventArgs e) { new Thread(()=>_ => DoWork()).Start(); } void DoWork() { for (int i = 0; i < 10; i++) { Thread.Sleep(1000); this.Invoke(new Action(() => textBox1.Text = DateTime.Now.ToString())); } }
主线程更新界面操作,辅助线程作后台操作
推荐一个类:BackgroundWorker,看下msdn的用法。。。
1.使用异步方法执行你的doWork(),然后在回调方法里面在textbox上显示你要的信息。
2.手动另起一个线程来处理dowork(),然后再调用主UI线程在textbox上显示你要的信息。
希望能帮到你
Application.DoEvents();
你所碰到的错误,应该是你的textbox被ui线程所占用了。你要用事件的方式把你需要表达的字符,添加到UI的时间中