Cześć,
mam problem z aplikacją konsolową. Na początek troche kodu:
(...)
procedure TTestowaAplikacja.Run;
var
obsluga:TObsluga;
begin
writeLn('Uruchomiono testowy program.');
writeLn('Uruchamiam nowy watek');
obsluga:=TObsluga.Create;
sleep(1000);
writeLn('Dalsza czesc programu');
end;
var
TestowaAplikacja: TTestowaAplikacja;
begin
TestowaAplikacja := TTestowaAplikacja.Create;
TestowaAplikacja.Run;
TestowaAplikacja.Free;
end.
Moj problem polega na tym, ze fragment
obsluga:=TObsluga.Create;
uruchamia watek, ktory wyswietla informacje "Uruchomiono nowy watek". Do tego fragmentu wszystko jest OK.
Nastepnie powinna pojawic sie informacja: "Dalsza czesc programu" jednak ponownie pojawiaja sie poprzednio wyswietlone informacje. W tym przypadku widze takie cos:
Uruchomiono testowy program.
Uruchamiam nowy watek.
Uruchomiono nowy watek.
Uruchamiam nowy watek.
Jak zmienie
writeLn('Uruchamiam nowy watek');
na writeLn('Cos tam');
to w ogole dostaje:
Uruchomiono testowy program.
Uruchamiam nowy watek.
Uruchomiono nowy watek.
Cos tam
no testowy pro
:P
Myslalem o jakims synchronize w wyswietlaniu informacji z watku ale to sie chyba uzywa jak cos sie zmienia w 'wizualnych komponentach'.
Dorzuce jeszcze fragment z watkiem bo moze tam cos zle zrobilem (chce zawiesic ten watek zeby potem moc go wznowic).
```delphi
TObsluga = class(TThread)
protected
procedure Execute; override;
public
constructor Create;
end;
constructor TObsluga.Create;
begin
inherited Create(false);
end;
procedure TObsluga.Execute;
begin
FreeOnTerminate := False;
writeLn('Uruchomiono watek: Obsluga');
Self.Suspend;
end;
Teoretycznie banalnie prosty program a pewnie gdzies popelniam blad. Prosze o pomoc.