ВУЗ:
Составители:
Рубрика:
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
- …
- следующая ›
- последняя »