在循环中处理一些数据,循环是无限循环,手工干预中断循环,这样每处理一条信息将当前的处理情况显示在一个Label上,可是每当我点击按钮开始执行数据处理之后,程序就失去反应,cpu全被这个程序百分之百占用,我想加个开始按钮、停止按钮,点击开始后就开始处理,点击停止就停止处理,开始现在点击开始后我就控制不了程序了,怎么办?

解决方案 »

  1.   

    最简单的方法
    bFlag := False;
    while .... do
    begin
      if bFlag then break;  //加一个全局变量如果bFlag 为 True 则退出循环
      ....
      Application.ProcessMessage;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      bFlag := True;
    end;
      

  2.   

    循環中加個檢測語句看看(如有個OPtion控件)
    if option1.value then break點擊看能不能 中斷循環
      

  3.   

    有道理,加一个
    Application.ProcessMessage;就应该能起作用
      

  4.   

    我觉得你这个程序的工作量不大没有必要用Thead来处理我同意一楼的说法
    var
     dFlag: boolean;
    button1.Click
     dFlag:= false;
     whlie true do
      begin
      ......your Program
      Application.ProcessMessage;
      if dFlag then Break;
     endbutton2.Click
      dFalg := true;
      

  5.   

    同意,用Application.ProcessMessage;就可以了
      

  6.   

    同意楼上的,application.processmessage 必不可少