unit chartThread;
interface
uses
  Classes,forms;type
  TchartThread = class(TThread)
  private
    { Private declarations }
    A_day,A_hour,A_minute:integer;
  protected
    procedure Integrator;
    procedure Execute; override;
  end;
procedure TchartThread.Integrator;
begin
    //同时画6根曲线,并且是6个 chartForm 中
    ChartAXForm.Chart1.Series[0].AddXY(A_day-1+A_hour/24+A_minute/360,A_XI[A_Day,A_hour,7]);
    
end;
procedure TchartThread.Execute;
var
   dataf:textfile;
begin
  OnTerminate:=Mainform.ThreadsDone;
  FreeOnTerminate := True;
  //计算过程,计算数组A_XI... 等
   for day:= 1 to time_last do
    begin 
        for hour:=1 to 24 do
    begin
         for minute:=1 to 15 do
           //计算
          end;
        synchronize(Integrator);
     end;
    ApplicationMessages;
 end;
在线程外 用
procedure TChartAXForm.CheckBox1Click(Sender: TObject);
begin
  chart1.Series[0].active:= not chart1.Series[0].active;
end; 
来确定某条曲线是否显示,多次执行线程时会出现读写错误?!!main.buttonbegin
     test:=TchartThread.Create(true);
     test.Resume;
 end;

解决方案 »

  1.   

    ApplicationMessages; //这个可以不要的,因为这理不管多忙不影响主线程处理消息的。day, hour, minute ,time_last 等变量不明。
    A_XI[] 数组不明。上面的数换成常量后,运行程序正常的。
      

  2.   

    day, hour, minute为循环控制变量 ,time_last 变量
    A_XI[] 为三维数组变量。
    ApplicationMessages; //这个可以不要的,因为这理不管多忙不影响主线程处理消息的。
    好像是必须要的,否则 程序运行时 显示滞后,而计算过程很快!Windows问题了