如何在多线程中调用winform窗体控件(续)
以前《在如何在多线程中调用winform窗体控件》文章中,有关多线程调用的一段代码:
private Thread myThread; private void Form1_Load(object sender, EventArgs e) { myThread = new Thread(new ThreadStart(RunsOnWorkerThread)); myThread.Start(); } private void RunsOnWorkerThread() { MethodInvoker mi = new MethodInvoker(SetControlsProp); BeginInvoke(mi); } private void SetControlsProp() { label1.Text = "myThread线程调用UI控件"; } 当时使用的声明委托的方式,后来本身看着实在以为不爽,代码太复杂了,下面对这段代码优化了一下,在Load事件中的代码以下: private void Form1_Load(object sender, EventArgs e) { Thread thread = new Thread(new ThreadStart( () => { this.BeginInvoke(new EventHandler( (object o, System.EventArgs e1) => { textBox1.Text = "内容已设置"; })); })); thread.Start(); } 使用匿名委托的形势后主要是减小了代码的理解难度,也方便维护。