nt +多线程。不行的话把线程级别设置为low...呵呵。

解决方案 »

  1.   

    我用的是多线程呀?(可能我没用对?)
    我是这样做的:
    T线程类 = class(线程类)
    ...
    procedure 计算函数(); //{for i:=1 to 100000}
    ...窗体上有一个按钮:click如下
    创建线程;
    执行 计算函数();   大概20秒
    这期间,窗口死锁。一动不动。
      

  2.   

    弹出一窗口‘正在计算中,请耐心等待...’,计算完后free它。
    开玩笑的,9x在单任务下如耗CPU过多就会降低其他请求的优先级,用2000试试... :)
      

  3.   

    在耗时语句之间多多加入
    Application.ProcessMessages;
    可以缓解占用CPU过多的情况.
      

  4.   

    你是怎么执行线程的?难道用的这样?
    thread := TMyThread.Create();
    thread.执行函数();
    ...
    这样根本就没有用啊,你应该把函数写在线程的Excute方法里或者在线程的Excute方法里调用,执行的时候让线程开始运行,线程会自动调用Excute方法的。比如:
    thread := TMyThread.Create(true); // 这里true表示线程创建的时候是被挂起的
    thread.Suspended := false; // 这里线程开始运行,就是开始执行thread.Excute方法
    ...
      

  5.   

    我也碰到这样的情况,在w2k中开始运行还很好,但过一会当你在那个程序产生一个实际,如窗体移动,然后就差不多等于死了,估计应该可能是线程优先级的问题,将它设低点看,如果不行就用API来创建多线程,或许那是DELPHI6的bug
      

  6.   

    应该不会是什么Bug,我当年学操作系统的时候,就用Delphi5做过一个演示程序,用线程演示并发控制,实现了信号量PV、管程操作,包含了大概有生产者-消费者、理发师-顾客、读者-写者、哲学家吃通心粉等等一大堆问题,不管是Win98/2000/XP,线程都表现的非常正常,和理论上的效果是一致的。
      

  7.   

    应该不会是什么Bug,我当年学操作系统的时候,就用Delphi5做过一个演示程序,用线程演示并发控制,实现了信号量PV、管程操作,包含了大概有生产者-消费者、理发师-顾客、读者-写者、哲学家吃通心粉等等一大堆问题,不管是Win98/2000/XP,线程都表现的非常正常,和理论上的效果是一致的。