c# 运行大运算程序主窗体卡掉的解决

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

c# 运行大运算程序主窗体卡掉的解决的相关文章

我在cmd输入wmic,提示说不是内部或外部命令,也不是可运行的程序或批处理文件,请问如何解决

C:\WINDOWS\system32\wbem> 看看你机器上有这个文件夹吗? 然后看看path里有这个路径吗?

Vue项目碰到"‘webpack-dev-server’不是内部或外部命令,也不是可运行的程序或批处理文件"报错

最近公司里做vue项目,svn了前端同事的项目代码,装好环境,运行项目(安装步骤随便百度一下,很详细),控制台里报错“‘webpack-dev-server’不是内部或外部命令,也不是可运行的程序或批处理文件,随机百度解决方法,有的说需要重新装依赖包,有的说扩展用户权限,都做了,但是报错依旧. 原因: 随机自己新建一个vue项目(https://segmentfault.com/a/1190000009871504),发现没有报错,于是可以肯定是svn下来的项目代码有问题, 解决办法: 最后将项

pip不是内部或外部命令也不是可运行的程序或批处理文件的问题

当我用windows电脑 pip install missingno 时 它居然会报pip不是内部或外部命令也不是可运行的程序或批处理文件的问题! 解决方法: 1)找到 pip.exe 所在位置,一般安装过Anaconda之后都会有这个文件,即已经安装过pip了,出现上面的问题是因为未在环境变量中添加它的路径. 2)D:\downloads\Anacoda\Scripts   这是在电脑里的位置 3)添加到环境变量中: 在此电脑中 - 属性 - 环境变量 - 系统变量 - Path - 编辑 4

主窗体关闭后登录窗体仍然运行

合作的时候建立U层,从登录窗体登陆成功,然后进入主窗体,然后将登录窗体隐藏(因为登录窗体Close()了的话整个程序就会结束).但是发现当把主窗体关闭以后,在VS里面运行的程序并没有结束,还在运行中.这就说明只是关闭了主窗体的线程,而没有关闭登录的窗体的线程,因为前面我们只是隐藏了它,而没有直接关闭它.这样的话就是当用户关闭了应用程序后,桌面上虽然不显示了,但是登录窗体的线程仍在运行着.感觉这样总是不好的,那么久要解决它. 原来的程序代码是这么写的 Program <span style="

Delphi中主窗体的formshow事件在程序自动创建窗体对象前就调用的错误。

这个,实际我也不知道这个标题该怎么写.因为用一句话描述错误有点困难. 下面用代码来说明吧. 最近做了一个delphi的程序,按照我的习惯一般是先创建一个窗体作为主窗体,其他的窗体都在这个基础上显示.另外,由于使用了数据库,所以添加了一个TDataModule控件,便于一些不能防止控件的单元进行数据库操作.把其他所有的窗体都设置为非自动创建.然后通过application.createform方法进行动态创建和调用. 好了,问题出现了. 在工程文件中有如下代码: Application.Creat

Android获取正在运行的程序并kill掉它

获取正在运行的程序并把它加入到一个listview的adapter类面,方法如下: // 正在运行的 public List<Programe> getRunningProcess() { pi = new PackagesInfo(this); am = (ActivityManager) getSystemService(ACTIVITY_SERVICE); // 获取正在运行的应用 run = am.getRunningAppProcesses(); // 获取包管理器,在这里主要通过包

Java 命令行运行java程序,出现“找不到或无法加载主类 ”的注意事项

引用:http://blog.chinaunix.net/uid-27106528-id-5209914.html 要在CMD命令行中使用java 运行java程序,关于出现 “找不到或无法加载主类 ”错误的解决办法,   网络上基本都是在说关于"classpath"路径的配置问题,要加入 ” .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;“    前面加入”.;",表面要在当前目录下面寻找类.       如果你试过了

WinForm 之 程序启动不显示主窗体

在 WinForm 程序启动时,不显示主窗体的实现方法主要有以下5种,第五种最简单,而且效果也不错,第四种方法也值得推荐. 实例代码如下: //隐藏窗体的方法1/5:不指定任何窗体为主窗体 //注意:通常,在一个程序中,关闭主窗体,就可以关闭应用程序. //但是在没有主窗体中,不行. //只能使用Application.Exit()才能关闭应用程序. //using可以保证Application结束前,关闭MyMainForm using (new Form1()) { Application.

获取当前进程(程序)主窗体句柄并设置wpf的父窗体为此句柄

原文:获取当前进程(程序)主窗体句柄并设置wpf的父窗体为此句柄 有时候在c++调用wpf控件的时候,wpf控件想自己显示窗体,但需要设置owner属性.迂回解决办法是设置wpf的window窗体的父窗体为进程的句柄. 1.获取当前进程id int id = Process.GetCurrentProcess().Id; 2.根据进程id获取进程主句柄 public static class ProcessHelper { private static class Win32 { interna