在子線程裡不能直接使用控制項,需要建立委託,建立一個winform程式,拖拽一個label控制項,id預設就好,代碼如下
using System;<br />using System.Collections.Generic;<br />using System.ComponentModel;<br />using System.Data;<br />using System.Drawing;<br />using System.Linq;<br />using System.Text;<br />using System.Windows.Forms;<br />using System.Threading;</p><p>namespace 子線程式控制制UI<br />{<br /> /// <summary><br /> /// 開發人員:it小金<br /> /// 時間:2010-12-15<br /> /// 功能:子線程式控制制表單中的控制項<br /> /// </summary><br /> public partial class Form1 : Form<br /> {<br /> public Form1()<br /> {<br /> InitializeComponent();<br /> }<br /> private delegate void MoveLabel(int val);//聲明代理 </p><p> void SetOffset(int val)<br /> {<br /> label1.Text = "從子線程裡傳入的值是:" + val.ToString();<br /> }<br /> private void ThreadFun()<br /> {<br /> if (this.InvokeRequired)<br /> {<br /> MoveLabel d = new MoveLabel(SetOffset);<br /> object[] arg = new object[] { 1 };//要傳入的參數值<br /> this.Invoke(d, arg);<br /> }<br /> }</p><p> //表單載入時執行的函數<br /> private void Form1_Load_1(object sender, EventArgs e)<br /> {</p><p> Thread td = new Thread(new ThreadStart(ThreadFun));<br /> td.Start();<br /> } </p><p> }<br />}<br />