高手在哪?

解决方案 »

  1. 用个
    while(true)
    {
    }
    不就可以了吗?
    在循环体中判断中断,break
      

  2. procedure MyTh.Execute;
    begin
      while not Terminated do //线程未结束则,比如你点程序的关闭按钮退出
        DoSomeThing();
    end;
      

  3. var Pause : Boolean;
    procedure MyTh.Execute;
    begin
    //线程未结束则,比如你点程序的关闭按钮退出
      while not Terminated do 
       begin
        while Pause  do
        Application.ProcessMessages;
        DoSomeThing();
       end;
    end;///在按钮的时间里加入  Pause := not Pause;
      

  4. 这样的话,cpu占用肯定一直100%,我觉的你应该看看waitforsingleobject()之类的windows等待函数,在程序循环等待的时候不会占用cpu时间的。
      

  5. 如果你得线程里面是线消息机制,比如用postthreadmessage来通信,那么你可以用一个循环来监测消息。
    再execute里
    var
    msg:tmsg;
    begin
      while (not terminated)and getmessage(msg,0,0,0) do
      begin
        //在这里监测msg.message是不是特定消息,如果是,就处理,否则采用下面默认处理。
        translatemessage(msg);
        dispatchmessage(msg);
        /////////////
      end;
    end;
      

  6. 这样一般不会总占用cpu,因为getmessage得不到线程消息不会返回。
      

类似问题 »