{#
Потоки (TTread) | Delphi | Программировние и др.
 
 
 
X
пароль
кодированный текст
результат
X
пароль
текст
код ссылки
просмотр кода
X
Вы действительно хотите удалить запись?
ctlg
Да
Нет
Информация
trg
Ok
 
Справочник
X
+
X
X
X
274
Потоки (TTread)
 
вопросответ
property ReturnValue: Integer;Свойство ReturnValue позволяет узнать и установить значение, возвращаемое потоком по его завершении. Эта величина полностью определяется пользователем
property Suspended: Boolean;Свойство suspended позволяет программисту определить, не приостановлен ли поток. С помощью этого свойства можно также запускать и останавливать поток.
procedure Suspend;Вызов метода Suspend приостанавливает поток с возможностью повторного запуска впоследствии. Метод suspend приостанавливает поток вне зависимости от ко
procedure Resume;Метод Resume класса TThread вызывается, когда поток возобновляет выполнение после остановки, или для явного запуска потока, созданного с параметром Cr
procedure Synchronize(Method: TThreadMethod);Этот метод относится к секции protected, т. е. может быть вызван только из потомков TThread. Delphi предоставляет программисту метод Synchronize для
property Priority: TThreadPriority;Свойство Priority позволяет запросить и установить приоритет потоков. Приоритеты потоков в деталях описаны выше. Допустимыми значениями приоритета для
property Handle: THandle read FHandle; property ThreadID: THandle read FThreadID;Свойства Handle и ThreadID дают программисту непосредственный доступ к потоку средствами API Win32. Если разработчик хочет обратиться к потоку и управ
function WaitFor: Integer;Метод WaitFor предназначен для синхронизации и позволяет одному потоку дождаться момента, когда завершится другой поток. Если вы внутри потока FirstTh
Еще одно полезное свойство: property FreeOnTerminate: Boolean;Если это свойство равно True, то деструктор потока будет вызван автоматически по его завершении. Это очень удобно для тех случаев, когда вы в своей пр
function Terminate: Integer;Для окончательного завершения потока (без последующего запуска) существует метод Terminate. Но если вы думаете, что этот метод делает какие-то принуди
destructor Destroy; override;Деструктор Destroy вызывается, когда необходимость в созданном потоке отпадает. Деструктор завершает его и высвобождает все ресурсы, связанные с объек
Конструктор объекта: constructor Create(CreateSuspended: Boolean);получает параметр CreateSuspended. Если его значение равно True, вновь созданный поток не начинает выполняться до тех пор, пока не будет сделан вызов
Если поток рассчитан на однократное выполнение каких-либо действий,то никакого специального кода завершения внутри Execute писать не надо.
Если поток был создан с аргументом CreateSuspended, равным False,то метод Execute выполняется немедленно, в противном случае Execute выполняется после вызова метода Resume
Переопределяя метод Execute,мы можем тем самым закладывать в новый потоковый класс то, что будет выполняться при его запуске.
Хотя формальное описание Execute — метод abstract,но мастер создания нового объекта TThread создает для вас пустой шаблон этого метода.
При работе с потоками необходимо учитывать приоритет создаваемых потоков. Так, если в предыдущем примере запустить не один поток, а два или больше, тоMyThread.Priority:=tpLower; Этого достаточно, чтобы компьютер чувствовал себя более свободно.
MyThread.Terminate;Метод Terminate уничтожает данный экземпляр потока. Теперь при нажати кнопки в приложении количество потоков всё равно остаётся равным 1 (это главный
Можно указать что после завершения кода поток завершится автоматически:MyThread.FreeOnTerminate:=true;
Далее можно указать параметры потока, например приоритет:MyThread.Priority:=tpNormal;
Запускать поток будем нажатием на кнопку:Вначале нужно создать экземпляр потока: MyThread:=TMyThread.Create(False); Параметр False запускает поток сразу после создания, True - запуск впоследс
Нужно создать процедуру Execute, уже описанную в классе TMyThreadprocedure TMyThread.Execute; begin //Здесь описывается код, который будет выполняться в потоке end;
Нужно ввести переменную класса TMyThread в varMyThread: TMyThread;
X
пароль