Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
Delphi 7 Enterprise
|
AW: Überschreiben von TThread.Terminate
7. Jul 2010, 11:25
Und wie geht das? Mit inherited?
ja, ein Beispiel aus obiger verlinkter Unit:
Delphi-Quellcode:
constructor TReadPipe.Create(Aread_stdout,Awrite_stdout:THandle);
begin
inherited Create(false);
FEvent:=TEvent.Create(nil,false,false,'');
FSyncString:=TSyncString.Create;
Fread_stdout:=Aread_stdout;
Fwrite_stdout:=Awrite_stdout;
freeonterminate:=true;
end;
destructor TReadPipe.Destroy;
begin
FEvent.Free;
FSyncString.Free;
inherited;
end;
procedure TReadPipe.Execute;
var Buf:array[0..1023] of byte;
bread:Cardinal;
s:string;
begin
repeat
ReadFile(Fread_stdout, Buf, length(buf), bread, nil); //wait for input
if terminated then exit;
setlength(s,bread);
move(buf[0],s[1],bread);
FSyncstring.Add(s);
FEvent.SetEvent;
until terminated;
end;
procedure TReadPipe.Terminate;
const fin='fin';
var bwrite:Cardinal;
begin
inherited;
WriteFile(Fwrite_stdout,fin,length(fin),bwrite,nil);
end;
Es gibt da auch noch ein größeres Beispiel.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
|
|
Zitat
|