unit
Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,SyncObjs;
procedure
incedit1;stdcall;
procedure
incedit2;stdcall;
type
TForm1 =
class
(TForm)
Begin_Threads_: TButton;
Edit1: TEdit;
Edit2: TEdit;
Terminatethread1: TButton;
terminatethread2: TButton;
SuspendThread_h1: TButton;
SuspendThread2: TButton;
Resumethread_2: TButton;
resumethread1: TButton;
EndThread_: TButton;
procedure
Begin_Threads_Click(Sender: TObject);
procedure
Terminatethread1Click(Sender: TObject);
procedure
terminatethread2Click(Sender: TObject);
procedure
resumethread1Click(Sender: TObject);
procedure
Resumethread_2Click(Sender: TObject);
procedure
SuspendThread_h1Click(Sender: TObject);
procedure
SuspendThread2Click(Sender: TObject);
procedure
EndThread_Click(Sender: TObject);
procedure
FormCreate(Sender: TObject);
procedure
FormDestroy(Sender: TObject);
private
public
end
;
var
Form1 : TForm1;
CritSec,CritSec1 : TCriticalSection;
implementation
var
th1,th2 :
LongWord
;
h1,h2 :
integer
;
procedure
incedit1;
var
i:
integer
;
begin
i:=
0
;
while
true
do
begin
CritSec
.
Enter;
form1
.
edit1
.
text:=inttostr(i);
i:=i+
1
;
CritSec
.
Leave;
end
;
end
;
procedure
incedit2;
var
i:
integer
;
begin
i:=
0
;
while
true
do
begin
CritSec1
.
Enter;
form1
.
edit2
.
text:=inttostr(i);
i:=i+
1
;
CritSec1
.
Leave;
end
;
end
;
{$R *.DFM}
procedure
TForm1
.
Begin_Threads_Click(Sender: TObject);
begin
h1:=beginthread(
nil
,
1024
,@incedit1,
nil
,
0
,th1);
h2:=beginthread(
nil
,
1024
,@incedit2,
nil
,
0
,th2);
end
;
procedure
TForm1
.
Terminatethread1Click(Sender: TObject);
begin
terminatethread(h1,
1
);
end
;
procedure
TForm1
.
terminatethread2Click(Sender: TObject);
begin
terminatethread(h2,
1
);
end
;
procedure
TForm1
.
resumethread1Click(Sender: TObject);
begin
resumethread(h1);
end
;
procedure
TForm1
.
Resumethread_2Click(Sender: TObject);
begin
resumethread(h2);
end
;
procedure
TForm1
.
SuspendThread_h1Click(Sender: TObject);
begin
suspendthread(h1);
end
;
procedure
TForm1
.
SuspendThread2Click(Sender: TObject);
begin
suspendthread(h2);
end
;
procedure
TForm1
.
EndThread_Click(Sender: TObject);
begin
EndThread(h1);
CloseHandle(h1);
CloseHandle(h2);
end
;
procedure
TForm1
.
FormCreate(Sender: TObject);
begin
CritSec:=TCriticalSection
.
Create;
CritSec1:=TCriticalSection
.
Create;
end
;
procedure
TForm1
.
FormDestroy(Sender: TObject);
begin
CritSec
.
Free;
CritSec1
.
Free;
end
;
end
.