写了一个运算过滤大文本的程序, 其中方法里边使用了多线程,并行线程等方法. 但主窗体控件直接使用此方法时,页面卡顿.所以主线程被堵塞. 代码如下, 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; }));
时间: 2024-12-16 00:36:26