zoukankan      html  css  js  c++  java
  • .NET中跨线程访问winform控件的方法

    1 第一种方式

                MethodInvoker invoker = () => { richTextBox1.AppendText(_ClientSocketModelConnectedEvent.Data); };
                if (this.richTextBox1.InvokeRequired)//true表示和主线程是同一个线程
                {
                    this.richTextBox1.Invoke(invoker);
                }
                else
                {
                    invoker();
                }

    2 第二种方式

       

      private void button4_Click(object sender, EventArgs e)
            {
                using (BackgroundWorker bw = new BackgroundWorker())
                {
                    bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
                    bw.DoWork += new DoWorkEventHandler(bw_DoWork);
                    bw.RunWorkerAsync("Tank");
                }         
            }
    
            void bw_DoWork(object sender, DoWorkEventArgs e)
            {       
                // 这里是后台线程, 是在另一个线程上完成的
                // 这里是真正做事的工作线程
                // 可以在这里做一些费时的,复杂的操作
                Thread.Sleep(5000);
                e.Result = e.Argument + "工作线程完成";
            }
    
            void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
            {
                //这时后台线程已经完成,并返回了主线程,所以可以直接使用UI控件了 
                this.label4.Text = e.Result.ToString(); 
            }
  • 相关阅读:
    容斥相关
    动态点分治
    杜教筛
    上下界网络流的理解
    putty securecrt
    借款费用
    在线画图工具
    费用包括(营业成本)和(期间费用)
    信用减值损失
    采用权益法核算的长期股权投资,被投资单位宣告发放现金股利
  • 原文地址:https://www.cnblogs.com/mibing/p/7422623.html
Copyright © 2011-2022 走看看