ВУЗ:
Составители:
Рубрика:
7
ни закрыть . При нажатии кнопки «Создать поток» окно программы будет вести
себя обычным, «дружелюбным» образом .
2. Для вывода строки текста вместо «напрашивавшихся» визуальных
средств Delphi использовалась функция API TextOut. Дело в том, что подавляю -
щее большинство визуальных компонентов Delphi стабильно работают только
внутри главного потока приложения . Исключением являются компоненты для
доступа к базам данных и графические классы , работающие с TCanvas (с послед-
ними необходимо использовать блокировки холста Lock и UnLock [4]). Если же
без компонентов Delphi внутри дополнительных потоков обойтись нельзя , то для
создания таких потоков рекомендуется использовать специализированный класс
TThread, входящий в библиотеку Delphi.
3. Класс TThread
Класс TThread инкапсулирует функции API программирования потоков.
Его основными преимуществами являются удобство использования , свойствен-
ное всем классам - надстройкам , и наличие специального метода Synchronize для
корректного использования внутри потоков визуальных компонентов VCL Del-
phi.
Свойства и методы класса
TThread
constructor Create
(CreateSuspensed:
Boolean);
Создает поток. Если аргумент имеет значение False,
созданный поток немедленно начинает выполнение
( управление передается методу Execute) . Если True
– поток ожидает вызова метода Resume
destructor De-
stroy: override;
Завершает поток и освобождает все ресурсы , им за-
нятые. Вызывается автоматически при завершении
метода Execute
procedure Resume;
Возобновляет поток после приостановки
procedure Suspend;
Приостанавливает поток
property Sus-
pended: Boolean;
При записи True/False приостанавлива-
ет/ возобновляет поток. При чтении показывает, не
приостановлен ли поток
procedure Termi-
nate;
Устанавливает свойство Terminated в True. При ис-
пользовании этого метода для завершения потока
метод Execute должен включать в себя проверку
свойства Terminated (см . лаб . раб . № 2).
property Termi-
nated: Boolean;
Показывает True, если ранее был вызван метод Ter-
minate.
function WaitFor:
integer;
Приостанавливает текущий поток до завершения
заданного потока и возвращает код завершения .
Например, внутри потока T1 вызов
code:=T2.WaitFor приостанавливает T1 до заверше-
ния T2
property Handle:
THandle;
Дескриптор потока
низакры ть. П ринаж атиикноп ки« Создать п оток» окно п рог раммы б удет вести
себ я об ы чны м, « друж елю б ны м» об разом.
2. Д ля вы вода строки текста вместо « нап раш ивавш ихся» визуальны х
средств Delphi исп ользовалась ф ункция API TextOut. Д ело в том, что п одавляю -
щ ее б ольш инство визуальны х комп онентов Delphi стаб ильно раб отаю т только
внутри г лавног о п отокап рилож ения. И склю чением являю тся комп оненты для
доступ ак б азам данны х иг раф ические классы , раб отаю щ иесTCanvas (сп ослед-
ниминеоб ходимо ис п ользовать б локировкихолстаLock иUnLock [4]). Е слиж е
б ез комп онентов Delphi внутридоп олнительны х п отоков об ойтись нельзя, то для
создания таких п отоков рекомендуется исп ользовать сп ециализированны й клас с
TThread, входящ ий в б иб лиотеку Delphi.
3. Класс TThread
К лассTThread инкап сулирует ф ункции API п рог раммирования п отоков.
Е г о основны мип реимущ ествами являю тся удоб ство исп ользования, свойствен-
ное всем клас сам-надстройкам, и наличие сп ециальног о методаSynchronize для
корректног о исп ользования внутрип отоков визуальны х комп онентов VCL Del-
phi.
С во йства и м ето ды класса TThread
constructor Create Создаетп оток. Е слиарг ументимеетзначениеFalse,
(CreateSuspensed: созданны й п оток немедленно начинаетвы п олнение
Boolean); (уп равлениеп ередается методу Execute) . Е слиTrue
– п оток ож идаетвы зоваметодаResume
destructor De- Заверш аетп оток иосвоб ож даетвсерес урсы , им за-
stroy: override; няты е. В ы зы ваетс
я автоматическип ризаверш ении
методаExecute
procedure Resume; В озоб новляетп оток п ослеп риостановки
procedure Suspend; П риостанавливаетп оток
property Sus- П ризап исиTrue/False п риостанавлива-
pended: Boolean; ет/возоб новляетп оток. П ричтениип оказы вает, не
п риостановлен лип оток
procedure Termi- Ус танавливаетсвойство Terminated в True. П риис -
nate; п ользованииэтог о методадля заверш ения п отока
метод Execute долж ен вклю чать в с еб я п роверку
свойстваTerminated (см. лаб . раб . № 2).
property Termi- П оказы ваетTrue, еслиранееб ы л вы зван метод Ter-
nated: Boolean; minate.
function WaitFor: П риостанавливаеттекущ ий п оток до заверш ения
integer; заданног о п отокаивозвращ аеткод заверш ения.
Н ап ример, внутрип отокаT1 вы зов
code:=T2.WaitFor п риостанавливаетT1 до заверш е-
ния T2
property Handle: Д ескрип тор п отока
THandle;
7
Страницы
- « первая
- ‹ предыдущая
- …
- 5
- 6
- 7
- 8
- 9
- …
- следующая ›
- последняя »
