委托多线程

public partial class Form1 : Form
    {
        /*
         * 界面上有一个button,和一个textbox,点击button1时,开始一个新线程,新线程中有一个方法,从0开始计数
         * 并累加,且将每一个新的数字显示到textbox1中去
         * */
        public Form1()
        {
            InitializeComponent();
        }
 
        public delegate void SetTextDelegate(int text);
 
        private void button1_Click(object sender, EventArgs e)
        {
            Thread th = new Thread(new ThreadStart(SetText));
            th.Start();
        }
        private void SetText()
        {
            for (int a=0;a<1000000;a++)
            {
                if (textBox1.InvokeRequired)
                {
                    textBox1.Invoke(new SetTextDelegate(SetTextDo), a);
                }
            }
        }
        public void SetTextDo(int i)
        {
            textBox1.Text = i.ToString();
        }
    }
 #region Windows 窗体设计器生成的代码
 
        /// <summary>
        /// 设计器支持所需的方法 - 不要
        /// 使用代码编辑器修改此方法的内容。
        /// </summary>
        private void InitializeComponent()
        {
            this.button1 = new System.Windows.Forms.Button();
            this.textBox1 = new System.Windows.Forms.TextBox();
            this.SuspendLayout();
            // 
            // button1
            // 
            this.button1.Location = new System.Drawing.Point(13, 23);
            this.button1.Name = "button1";
            this.button1.Size = new System.Drawing.Size(75, 23);
            this.button1.TabIndex = 0;
            this.button1.Text = "button1";
            this.button1.UseVisualStyleBackColor = true;
            this.button1.Click += new System.EventHandler(this.button1_Click);
            // 
            // textBox1
            // 
            this.textBox1.Location = new System.Drawing.Point(145, 23);
            this.textBox1.Name = "textBox1";
            this.textBox1.Size = new System.Drawing.Size(100, 21);
            this.textBox1.TabIndex = 1;
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(284, 262);
            this.Controls.Add(this.textBox1);
            this.Controls.Add(this.button1);
            this.Name = "Form1";
            this.Text = "Form1";
            this.ResumeLayout(false);
            this.PerformLayout();
 
        }
原文地址:https://www.cnblogs.com/hddkman/p/4286874.html