Witam,
piszę troszkę bardziej rozbudowane programy i wiedziałem że prędzej czy później będę musiał zetknąć się z wątkami. Przeczytałem artykuł Adama Boducha o wątkach ale tak średnio go zrozumiałem. Napisałem prosty program do obsługi wątków wykorzystujący procedurę Sleep. Jak wiadomo, korzystanie z tej procedury bez pomocy wątków "zawiesza" aplikację na czas wykonania procedury,więc chciałem skorzystać z dobrodziejstwa wątku. Niestety w kodzie nie pokazuje się komunikat ShowMessage a gdy zamykam program, pokazuje się błąd krytyczny. Co robię źle? Oto kod całego modułu:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
TMojWatek = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
public
constructor Create;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
constructor TMojWatek.Create;
begin
inherited Create(False); //wywolanie watku
FreeOnTerminate := True;
end;
procedure TMojWatek.Execute;
var
i: integer;
begin
for i := 1 to 5 do
begin
sleep(1000);
ShowMessage('Pokazuje sie juz ' + IntToStr(i) + ' raz!');
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
TMojWatek.Create;
end;
end.