Главный модуль:
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, Unit2;
type
TForm1 = class (TForm)
RichEdit1: TRichEdit;
Label1: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
end ;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1 . Button1Click(Sender: TObject);
begin
<font color="Red">MyThread . Start;</font>
end ;
end .
|
Модуль с индивидуальным потоком (Thread Object):
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | unit Unit2;
interface
uses
Classes, SysUtils;
type
TMyThread = class (TThread)
protected
procedure Execute; override;
end ;
var
MyThread: TMyThread;
i: integer ;
implementation
uses Unit1;
procedure UpLab;
begin
Form1 . Label1 . Caption := IntToStr(i);
end ;
procedure TMyThread . Execute;
begin
i := 0 ;
while True do
begin
i := i + 1 ;
Synchronize(UpLab);
if i > 100000 then Break;
end ;
end ;
initialization
MyThread := TMyThread . Create( True );
MyThread . Priority := tpLower;
finalization
MyThread . Free;
end .
|
Каким образом осуществить повторное выполнение потока? При повторном нажатии Button1 выводится следующая ошибка: Cannot call Start on a running or suspended thread.