带参数线程,不带参数线程

private void button1_Click(object sender, EventArgs e)
        {
            //带参数
            ThreadParam param = new ThreadParam();
            param.t_i = 3;  //定义循环次数
            Thread _WriteThread = new Thread(new ParameterizedThreadStart(doThread));   
            _WriteThread.Start(param);   //启动新线程,不占用主界面线程时间
            textBox1.Text = "演示";
        }

        private void doThread(object threadData)
        {
            ThreadParam param = (ThreadParam)threadData;
            for (int i = 0; i < param.t_i; i++)
            {
                //循环体,例如暂停1s,会看到效果,先显示“演示”后显示循环次数
                System.Threading.Thread.Sleep(1000);
            }
            //循环完毕后赋值
           if (this.IsDisposed) return;
           this.Invoke(new EventHandler(delegate(object s1, EventArgs e1)
           {
               textBox1.Text = param.t_i.ToString();

           }));
 

        }

        private void button2_Click(object sender, EventArgs e)
        {
            //不带参数
            Thread _WriteThread = new Thread(new ThreadStart(doThreadN));
            _WriteThread.Start();   //启动新线程,不占用主界面线程时间
            textBox1.Text = "演示";
        }

        private void doThreadN()
        {
           
            for (int i = 0; i < 3; i++)
            {
                //循环体,例如暂停1s,会看到效果,先显示“演示”后显示循环次数
                System.Threading.Thread.Sleep(1000);
            }
            //循环完毕后赋值
            if (this.IsDisposed) return;
            this.Invoke(new EventHandler(delegate(object s1, EventArgs e1)
            {
                textBox1.Text = "3";

            }));


        }

    }

     class ThreadParam
    {  
        public int t_i;
     
    }

  

原文地址:https://www.cnblogs.com/xiaochun126/p/4158120.html