C#利用委托进行多线程访问控件

  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();
 
         }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值