如何在多線程中調用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(); } 使用匿名委託的形勢後主要是減小了代碼的理解難度,也方便維護。