http://stephencleary.com/projects/
/// <summary> /// /// </summary> public partial class Form2 : Form { //[ComVisible(false)] //public delegate void ParameterizedThreadStart(object objfield); /// <summary> /// /// </summary> public Form2() { InitializeComponent(); } /// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Form2_Load(object sender, EventArgs e) { MyDu du = new MyDu(); Control.CheckForIllegalCrossThreadCalls = false; Thread t1 = new Thread(new ThreadStart(TestMethod)); Thread t2 = new Thread(new ParameterizedThreadStart(TestMethod)); //Thread t3 = new Thread(new ThreadStart(du.setData)); ThreadPool.QueueUserWorkItem(new WaitCallback(TaskProc1), new Person { Id = 1, Name = "測試", Count =100 }); du.BegID = 100; du.EndID = 20000; du.Le1 = this.label3; du.Le2 = this.label4; Thread t3 = new Thread(new ThreadStart(du.Run)); t1.IsBackground = true; t2.IsBackground = true; t3.IsBackground = true; t1.Start(); t2.Start("hello"); t3.Start(); } /// <summary> /// /// </summary> /// <param name="x"></param> public void TaskProc1(object x) //執行的任務 { Person person = x as Person; } // private delegate void InvokeCallback(string msg); // private delegate void SetLabelDelegate(string value); /// <summary> /// /// </summary> void TestMethod() { //InvokeCallbackmsgCallback = new InvokeCallback(m_comm_MessageEvent); string v = "geovind du 1"; this.label1.Text = v; //if (this.InvokeRequired) //{ // SetLabelDelegate d = new SetLabelDelegate(TestMethod); // this.Invoke(d, new object[] { v}); //} //else //{ // this.label1.Text = v; //} } void TestMethod(object data) { if (this.InvokeRequired) { SetLabelDelegate d = new SetLabelDelegate(TestMethod); this.Invoke(d, new object[] { data }); } else { string datastr = data as string; this.label2.Text = datastr; } } } public class Person { public int Id { get; set; } public string Name { get; set; } public int Count { get; set; } } /// <summary> /// /// </summary> class MyDu { private int begID; public int BegID { set{this.begID=value;} } private int endID; public int EndID { set{this.endID=value;} } private Label le1; public Label Le1 { set { this.le1 = value; } } private Label le2; public Label Le2 { set { this.le2 = value; } } /// <summary> /// /// </summary> public void Run() { method(begID, endID, le1, le2); } /// <summary> /// /// </summary> /// <param name="begin"></param> /// <param name="end"></param> private void method(int begin,int end,Label labe,Label labe2) { labe.Text = begin.ToString(); labe2.Text = end.ToString(); } } }