c#,winform,为防止界面卡死,新建线程运行耗时算法,速度骤降

问题描述

c#,winform,为防止界面卡死,新建线程运行耗时算法,速度骤降

原本单线程下3分钟,创建个线程这么做之后要35分钟,各位大哥大姐行行好,告诉我这个怎么破?

 //齐套分析按钮事件
        private void btnQtfx_Click(object sender, EventArgs e)
        {
            qtfxStart();            //启动进度条
            if (gridView1.RowCount > 0)
            {
                int[] selected = this.gridView1.GetSelectedRows();          //得到选中行
                calculateThread = new Thread(new ParameterizedThreadStart(qtfx));
                //calculateThread.Priority = ThreadPriority.Highest;
                calculateThread.Name = "分析线程";
                calculateThread.Start(selected);                //把选中行索引传到qtfx方法
            }
            else
            {
                MessageBox.Show("没有数据");
            }
        }
        //齐套分析
        private void qtfx(Object o)
        {

            int[] selected = (int[])o;          //得到传进来的参数
            AnalysisManage am = new AnalysisManage(dt_storey, dt_onway);
            DateTime begin = DateTime.Now;
            DataTable dt = am.analysis(selected);                         //齐套分析,问题在这一句,最耗时
            CallbackWithDT qt = new CallbackWithDT(qtfxDone);
            this.Invoke(qt, new object[] { dt });                           //把分析结果传到“窗体线程”
            DateTime end = DateTime.Now;
            MessageBox.Show((end - begin).ToString());
        }

解决方案

qtfxDone函数怎么写的,am.analysis怎么实现的。

时间: 2024-11-01 20:53:14

c#,winform,为防止界面卡死,新建线程运行耗时算法,速度骤降的相关文章

C#串口收发数据,子线程更新textbox控件内容,一段时间后,界面卡死,请教问题原因所在

问题描述 1.现象描述:我自己用C#做了一个模拟流量计软件,下位机大概每100ms会发送一些数据(8字节),我的软件接收后,响应一个9字节的数据.数据的接收和发送都在richtextbox中显示出来.我开了一个子线程,这个线程每100ms去更新textbox控件内容,(就是先读取textbox的内容,在此基础上递增一个常量,再显示在textbox中),程序能够正常运行一段时间,然后就出现了界面卡死的现象,串口能够正常收发,richtextbox中的日志数据能够正常打印,但就是主界面死掉了,点什么

C#多线程界面卡死问题的解决方法

问题描述: 当我们的界面需要在程序运行中不断更新数据时, 当一个textbox的数据需要变化时, 对于这个问题可以先参考下我的另外一个文章 为了让程序执行中不出现界面卡死的现像,最好的方法就是多线程来解决 一个主线程来创建界面,使用一个子线程来执行程序并更新主界面 这样就不会出现卡死的现像了 这肯定是没有问题的, 但是为什么在使用的过程中一样会有很多地方会出现卡死呢,而且有用户跟我说是我的Httphelper类的问题,其实不是,而且我再次声明我的Httphelper类跟多线程并没有关系.不要在诬

c#-C#界面卡死要怎么处理

问题描述 C#界面卡死要怎么处理 项目需要用C#做一个测试软件,界面做好之后发现软件在测试时,窗体界面就卡死不动了,必须等测试完成之后界面才会反应过来,请问怎么样可以在程序 执行的时候界面能够不卡死呢?好像是用多线程? 解决方案 长时间运行的任务要使用多线程,要不ui会假死直到任务完成.使用线程时注意更新ui要使用委托来更新,要不会出错 解决方案二: 为测试程序开一个线程 解决方案三: 你可以使用异步的方式.可以像LLCF说的那样,开一个线程.如果要共享数据的话,可能有点危险. 推荐一个安全而且

winform程序对界面上控件的统一控制【二】组件版

继上篇文章winform 程序对界面上控件的统一控制[一](赋值\清空\验证- -) ,本篇文章将实现一个同样功能的Component(组件). 先看看组件的实现,如下所示: 代码一 public partial class CtrlValidation : Component { public CtrlValidation() { InitializeComponent(); typeCache = new TypeCache(); } public CtrlValidation(IConta

WindowsXP系统正在启动界面卡死怎么解决

  WindowsXP系统正在启动界面卡死怎么解决          1.重启系统,在进入Win XP之前连续点击"F8",选择"安全模式",输入administrator用户的密码后进入Win XP的界面. 2.在"开始"-->"运行"处输入"control userpasswords2",弹出界面 3.选中"用使用本机,用户必须输入用户名和密码".重启后即出现多用户的登录界面,

udp 广播 界面卡死

问题描述 udp 广播 界面卡死 各位大大,我在做iphone手机软件时,得用到udp广播收发数据,但这过程中会出现界面卡死的现象,请问有前辈碰到这头疼的问题没?求解释......谢谢了 解决方案 我也是这样,求解啊~~~

javascript-js alert 造成界面卡死

问题描述 js alert 造成界面卡死 $("#content") 为一个textarea,在$("#content")上加一个监听,监听输入的文字个数 在手机端输入时,当输入超过限定字数时,显示提示信息后界面就会卡死,请问是什么原因? 是否还有其他的解决方案?请一并告知,谢谢! document.getElementById('content').onpropertychange = function() { var curLength=$("#con

安卓多线程问题如何新建线程

问题描述 安卓多线程问题如何新建线程 Runnable updateThread = new Runnable() 在代码中看到的,不是Java中实现线程有两种方法,一种是继承thread类,还有一种是实现Runnable接口,这行代码怎么理解 解决方案 public class Thread extends Object implements Runnable Thread类也是Runnable接口的子类.Runnable updateThread = new Runnable()这并没有创建

用winform 写的界面 有个按钮 他的功能是this.visble=false 主界面隐藏

问题描述 用winform 写的界面 有个按钮 他的功能是this.visble=false 主界面隐藏 用winform 写的界面 form1 界面 有个按钮 他的功能是this.visble=false 主界面隐藏 现在我需要 按 ctrl+Alt+shift 把它重新呼出来 或者 按F10 把他隐藏 按F12 把他呼出来 怎么 弄? 解决方案 http://www.cnblogs.com/dada-911911/p/3336943.htmlhttp://blog.csdn.net/jian