Delphi 7: How to implement multi-threading?

前端 未结 2 2164
清酒与你
清酒与你 2021-02-11 03:35

I have a TButton in the main TForm. When user click the button, it will execute the below process:

begin
  Process_done := FALSE;

  Process_Result.Clear;

  cmd         


        
相关标签:
2条回答
  • 2021-02-11 03:57

    You should create a class inherited from TThread and put that code in there. I don't remember exactly, but I think you'll find TThread template in File->New dialog box. When code execution is finished, you just notify your gui. Here's an article how to synchronize UI with external thread http://delphi.about.com/od/kbthread/a/thread-gui.htm

    0 讨论(0)
  • 2021-02-11 04:00

    Try something like this:

    type
      TRunProcessThread = class(TThread)
      protected
        cmdProcess: Whatever;
        procedure Execute; override;
      public
        constructor Create(const ACmdLine: String);
        destructor Destroy; override;
      end;
    
    constructor TRunProcessThread.Create(const ACmdLine: String);
    begin
      inherited Create(True);
      FreeOnTerminate := True;
      cmdProcess := Whatever.Create;
      cmdProcess.CommandLine := ACmdLine;
    end;
    
    destructor TRunProcessThread.Destroy;
    begin
      cmdProcess.Free;
      inherited;
    end;
    
    procedure TRunProcessThread.Execute;
    begin
      cmdProcess.Run;
      ...
    end;
    

    .

    procedure TForm1.Button1Click(Sender: TObject);
    var
      Thread: TRunProcessThread;
    begin
      Thread := TRunProcessThread.Create(AnsiQuotedStr(AppPath + 'getdata.exe', #34));
      Thread.OnTerminate := ProcessDone;
      Thread.Resume;
    end;
    
    procedure TForm1.ProcessDone(Sender: TObject);
    begin
      // access TRunProcessThread(Sender) to get result information as needed ...
    end;
    
    0 讨论(0)
提交回复
热议问题