Приложение
Описание класса TThread ( Находится в Classes.hpp ) class DELPHICLASS TThread; class PASCALIMPLEMENTATION TThread : public System::TObject { typedef System::TObject inherited; private: unsigned FHandle; unsigned FThreadID; bool FCreateSuspended; bool FTerminated; bool FSuspended; bool FFreeOnTerminate; bool FFinished; int FReturnValue; TNotifyEvent FOnTerminate; TThreadMethod FMethod; System::TObject* FSynchronizeException; System::TObject* FFatalException; void __fastcall CheckThreadError(int ErrCode)/* overload */; void __fastcall CheckThreadError(bool Success)/* overload */; void __fastcall CallOnTerminate(void); TThreadPriority __fastcall GetPriority(void); void __fastcall SetPriority(TThreadPriority Value); void __fastcall SetSuspended(bool Value); protected: virtual void __fastcall DoTerminate(void); virtual void __fastcall Execute(void) = 0 ; void __fastcall Synchronize(TThreadMethod Method); __property int ReturnValue = {read=FReturnValue, write=FReturnValue, nodefault}; __property bool Terminated = {read=FTerminated, nodefault}; public: __fastcall TThread(bool CreateSuspended); __fastcall virtual ~TThread(void); virtual void __fastcall AfterConstruction(void); void __fastcall Resume(void); void __fastcall Suspend(void); void __fastcall Terminate(void); unsigned __fastcall WaitFor(void); __property System::TObject* FatalException = {read=FFatalException}; __property bool FreeOnTerminate = {read=FFreeOnTerminate, write=FFreeOnTerminate, nodefault}; __property unsigned Handle = {read=FHandle, nodefault}; __property TThreadPriority Priority = {read=GetPriority, write=SetPriority, nodefault}; __property bool Suspended = {read=FSuspended, write=SetSuspended, nodefault}; __property unsigned ThreadID = {read=FThreadID, nodefault}; __property TNotifyEvent OnTerminate = {read=FOnTerminate, write=FOnTerminate}; };
Основные свойства и методы класса TThread
Свойство |
Описание |
FreeOnTerminate |
Указывает, будет ли объект потока автоматически удален при завершении работы потока |
Handle |
Дескриптор потока, для вызова API-функций |
Priority |
Задает приоритет потока |
ReturnValue |
Определяет значение, возвращаемое другим потокам, после завершения текущего потока |
Suspended |
Указывает, приостановлено-ли выполнение потока |
Terminated |
Определяет, может ли прекращаться выполнение потока |
ThreadID |
Определяет идентификатор потока |
Метод |
Описание |
DoTerminate() |
Вызывает обработчик события OnTerminate() без прекращения работы потока |
Execute() |
Содержит код, который будет выполнен при запуске потока |
Resume() |
Возобновляет работу приостановленного потока |
Suspend() |
Приостанавливает работу потока |
Synchronize() |
Выполняет вызов в первичном потоке библиотеки VCL |
Terminate() |
Сигнализирует о прекращении выполнения потока |
WaitFor() |
Ждет прекращения работы потока |
есть и другие менее используемые свойства и методы.
Предупреждение: исключения, которые возбуждены, но не перехвачены в TThread потомке при выполнении в методе Execute могут стать причиной access violations, когда Вы выполняете приложение вне интегрированной среды разработки. Вы можете принять меры против этого access violation, обеспечив метод Execute блоком try.._finally, который включает тело этого метода. Для выполнения работы потребуется получения r, g, b цветов. Можно использовать следующий код .
#include "GlSkel.h"
r= (GLbyte)GetRValue(bitmap->Canvas->Pixels[i][j]);
g= = (GLbyte)GetGValue(bitmap->Canvas->Pixels[i][j]);
b= (GLbyte)GetBValue(bitmap->Canvas->Pixels[i][j]);
где i, j - координаты пикселя.
Отчет
Отчет должен содержать описание программы и анализ полученных результатов. Защита студентом работы производится в установленном порядке при личном собеседовании с преподавателем. Студент обязан ответить на любой вопрос преподавателя, касающийся содержания представленного отчета.