ВУЗ:
Составители:
Рубрика:
15
{ ЗАМЕЧАНИЕ: Перенесите переменную GlobalStr из блока
var в блок
threadvar и обратите внимание на разницу в результате работы
приложения. }
var
//threadvar
GlobalStr: string;
type
TTLSThread = class(TThread)
private
FNewStr: String; protected
procedure Execute; override;
public
constructor Create(const ANewStr: String);
end;
procedure SetShowStr(const S: String);
begin
if S = '' then
MessageBox(0, PChar(GlobalStr), 'The string is...', MB_0K)
else
GlobalStr := S;
end;
constructor TTLSThread.Create(const ANewStr: String);
begin
FNewStr := ANewStr;
inherited Create (False);
end;
procedure TTLSThread.Execute;
begin
FreeOnTerminate := True;
SetShowStr(FNewStr);
SetShowStr('');
end;
procedure TMainForm.ButtonlClick(Sender: TObject);
begin
SetShowStr('Hello world');
SetShowStr('');
TTLSThread.Create('Dilbert');
Sleep (100);
SetShowStr('');
end;
end.
B этой демонстрационной программе после создания вторичного потока вы -
зывается процедура Win32 API sleep, которая объявляется следующим образом:
procedure Sleep(dwMilliseconds: DWORD); stdcall;
Процедура sleep сообщает операционной системе, что текущий поток не нуж -
дается в дополнительных циклах процессора в течение миллисекунд, заданных
15
{ ЗАМЕЧАНИЕ: Перенесите переменную GlobalStr из блока
var в блок
threadvar и обратите внимание на разницу в результате работы
приложения. }
var
//threadvar
GlobalStr: string;
type
TTLSThread = class(TThread)
private
FNewStr: String; protected
procedure Execute; override;
public
constructor Create(const ANewStr: String);
end;
procedure SetShowStr(const S: String);
begin
if S = '' then
MessageBox(0, PChar(GlobalStr), 'The string is...', MB_0K)
else
GlobalStr := S;
end;
constructor TTLSThread.Create(const ANewStr: String);
begin
FNewStr := ANewStr;
inherited Create (False);
end;
procedure TTLSThread.Execute;
begin
FreeOnTerminate := True;
SetShowStr(FNewStr);
SetShowStr('');
end;
procedure TMainForm.ButtonlClick(Sender: TObject);
begin
SetShowStr('Hello world');
SetShowStr('');
TTLSThread.Create('Dilbert');
Sleep (100);
SetShowStr('');
end;
end.
B этой демо нстрацио нно й про грамме по сле со здания вторично го по тока вы -
зы вается про цедураWin32 API sleep, ко торая о бъ является следую щ им о бразо м:
procedure Sleep(dwMilliseconds: DWORD); stdcall;
П ро цедура sleep со о бщ аето перацио нно й системе, что текущ ий по ток не нуж -
дается в до по лнительны х циклах про цессо рав течение миллисекунд, заданны х
Страницы
- « первая
- ‹ предыдущая
- …
- 13
- 14
- 15
- 16
- 17
- …
- следующая ›
- последняя »
