写了一个运算过滤大文本的程序, 其中方法里边使用了多线程,并行线程等方法.  但主窗体控件直接使用此方法时,页面卡顿.所以主线程被堵塞. 代码如下, splitfile 这个方法运行时页面卡顿,阻塞了主线程

  private void button3_Click(object sender, EventArgs e)
        {
            marqueeProgressBarControl1.Visible = true;
            marqueeProgressBarControl1.Properties.ShowTitle = true;
            marqueeProgressBarControl1.Text = "数据处理中...请稍后...";
           string file = txtPath.Text.Trim();
           SpiltFile(file, 1);
          marqueeProgressBarControl1.Visible = false;
        }

改成这样:

    marqueeProgressBarControl1.Visible = true;

            marqueeProgressBarControl1.Properties.ShowTitle = true;
            marqueeProgressBarControl1.Text = "数据处理中...请稍后...";
           
            Thread thread = new Thread(new ThreadStart(Run)); thread.Start();

涉及到方法里边访问控件的问题,所以要使用专门为ui 主线程留下的invoke

   this.Invoke(new EventHandler(delegate {
                this.marqueeProgressBarControl1.Visible = false;
            }));

 

posted on 2017-08-31 11:04  小石头的一天  阅读(312)  评论(0编辑  收藏  举报