日期:2014-05-18  浏览次数:20963 次

请问,这种慢执行,是不是需要多线程解决
有个功能,要进行200次循环,每次循环都会做很多事情,使得程序计算结果要很长时间才得到,并且界面也像死了似的,要过一会儿才得到计算结果

困扰了一整天了,

请问,要解决这种情况,是不是需要用多线程来解决,大概思路是怎么样的?

------解决方案--------------------
循环里加上Application.DoEvents();
界面不会死
------解决方案--------------------
探讨

我需要解决计算速度的问题

------解决方案--------------------
可以多线程,先设置一个整数型全局变量,值为你要循环的次数,再设置一个引用类型的实例,然后循环用 ThreadPool.QueueUserWorkItem 打开你要循环次数的线程数,线程方法里执行你每个循环要做的事,方法执行到结束时 lock 之前的全局引用类型的实例,将整数型全局变量-1,再判断变量是否为0,如果为0,就是全部执行完,进行原先循环完之后的操作
------解决方案--------------------
探讨

引用:

引用:

我需要解决计算速度的问题

1. 换强劲的机器
2. 优化你的算法

双核,差不多了吧,算法,我看也没啥可以优化的

------解决方案--------------------
你的loop中有i/o输入输出吗,有的话尽量避免
------解决方案--------------------
可以用多线程解决界面卡死问题,如果你是单cpu,多线程并不会给你带来时间上的减少,cpu数量多于线程数量时,才会有所谓的并行工作,提高效率
------解决方案--------------------
可以用多线程解决,至少要再开辟一个子线程,让他去计算,然后把计算的进度通知主线程,
让操作者可以去干点别的,还能时刻看到计算的进度
------解决方案--------------------
把你代码贴出来看看有木有可以优化的地方呢、
PS:这样的长操作应该要在一部线程中执行的喔。
------解决方案--------------------
探讨
我需要解决计算速度的问题,对于界面假死不是主要的需求................................

------解决方案--------------------
如果不需要马上得到计算结果就用多线程,或做个等待提示+多线程
------解决方案--------------------
我也遇到过这种问题,不过我的程序是通过连接到一个应用程序后,再对这个应用程序进行操作,请问如何提高 这速度呢?
------解决方案--------------------
我也遇到过这种问题,不过我的程序是通过连接到一个应用程序后,再对这个应用程序进行操作,请问如何提高 这速度呢?
------解决方案--------------------
换机器了吗
优化算法了吗
------解决方案--------------------
探讨
引用:

可以多线程,先设置一个整数型全局变量,值为你要循环的次数,再设置一个引用类型的实例,然后循环用 ThreadPool.QueueUserWorkItem 打开你要循环次数的线程数,线程方法里执行你每个循环要做的事,方法执行到结束时 lock 之前的全局引用类型的实例,将整数型全局变量-1,再判断变量是否为0,如果为0,就是全部执行完,进行原先循环完之后的操作

我……