13.01.2015 Views

Объектно-ориентированное программирование на С++ - eDrive

Объектно-ориентированное программирование на С++ - eDrive

Объектно-ориентированное программирование на С++ - eDrive

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

80<br />

Свойства и методы объектов Thread<br />

Таблица 16<br />

Свойство, метод<br />

FreeOnTerminate<br />

Handle<br />

Priority<br />

ReturnValue<br />

Suspended<br />

Terminated<br />

ThreadID<br />

DoTerminate ()<br />

Execute ()<br />

Resume ()<br />

Suspend ()<br />

Synchronize ()<br />

Terminate ()<br />

WaitFor ()<br />

Наз<strong>на</strong>чение<br />

Автоматическое удаление потокового объекта по завершении работы<br />

потока<br />

Дескриптор потока для вызова функций API<br />

Приоритет потока<br />

Возвращаемое з<strong>на</strong>чение по завершении работы потока<br />

Приз<strong>на</strong>к приостановки работы потока<br />

Приз<strong>на</strong>к прекращения работы потока<br />

Идентификатор потока<br />

Вызов обработчика события OnTerminate без прекращения работы<br />

потока<br />

Код, выполняемый при запуске потока<br />

Возобновление работы приостановленного потока<br />

Приостановка работы потока<br />

Синхронизация обращения к библиотеке VCL в первичном потоке<br />

Прекращение работы потока<br />

Ожидание прекращения работы потока<br />

В метод Execute программист должен поместить код, который будет<br />

выполняться после загрузки потока в фоновом режиме по отношению к первичному<br />

потоку. Кроме того, в метод Execute обычно включают еще три выражения:<br />

if (Terminated) break;<br />

FreeOnTerminate = true;<br />

// для прекращения работы потока<br />

// для автоматического освобождения памяти<br />

// потоком после завершения его работы<br />

Synchronize (имяФункции); // для синхронизации доступа к объектам<br />

// библиотеки VCL, за исключением<br />

// графических объектов<br />

Функцию, имя которой выступает в качестве аргумента метода Synchronize,<br />

объявляют и определяют в этом же файле потока, <strong>на</strong>пример:<br />

void __fastcall TThread1::Display () { Form1–>Label1–>Caption = “Пример”; }<br />

Для работы с формой в файл кода потока включают заголовок файла<br />

формы. Если в методе Execute присутствует код работы с графикой, его обрамляют<br />

выражениями, блокирующими вывод графики из других потоков:<br />

Form1–>Image1–>Сanvas1–>Lock ();<br />

Вывод графики <strong>на</strong> канву<br />

Form1–>Image1–>Сanvas1–>Unlock ();

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!