Kaw*_*hii 1 delphi multithreading delphi-7
我在主要的TForm中有一个TButton.当用户单击该按钮时,它将执行以下过程:
begin
Process_done := FALSE;
Process_Result.Clear;
cmdProcess.CommandLine := #34+AppPath+'getdata.exe"';
cmdProcess.Run;
Repeat
Application.ProcessMessages;
Until Process_done;
end;
Run Code Online (Sandbox Code Playgroud)
如上所示,该进程调用外部可执行文件,该进程可能需要一些时间来阻止主应用程序.
这只是一个过程,我需要另一个过程.
所以,我正在考虑实现多线程,我可以在一个单独的线程中运行上面的过程.另一个过程也是如此.并且主线程可以在检查两个进程何时完成时执行某些操作.
谁能给我一些使用Delphi 7如何做到这一点的例子?
或者指向一篇文章,这样的简单实现?
谢谢.
Rem*_*eau 13
尝试这样的事情:
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;
Run Code Online (Sandbox Code Playgroud)
.
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;
Run Code Online (Sandbox Code Playgroud)