Логин: Пароль:    Регистрация Всеми возможностями сайта можно пользоваться
только после авторизации.
   Забыли пароль?

Поиск
L



Статистика
u
Пользователи онлайн: нет
Гостей онлайн: 2
Всего онлайн: 2
Зарегистрировано юзеров: 6358
Комментариев на сайте: 645
Новый юзер: Realtyvaday



Последние комментарии
c
Aqel прокомментировал "Урок 71 - Работа с сжатыми файлами":
GZip псевдоархив, на мой вопрос тоже не отвечают, как распаковать отдельные файлы/папки...
Pingitrus прокомментировал "Урок 71 - Работа с сжатыми файлами":
Есть еще кто нибудь живой на этом сайте, кто сможет помочь? Так то все работает, zip и rar распаковывает, но у меня есть файл dat который сжат GZip, почему то его не удается распаковать или так не получится так как этот файл не является архивом или является?)) пишет ошибку что неверная функция



Мы в соцсетях
c
Delphi
Урок 53 - Потоки в Delphi, (часть 1/3)

  Потоки в Delphi выполняют функцию имитации псевдопараллельной работы приложения. Как известно, для организации многозадачности операционная система выделяет каждому приложению, выполняющемуся в настоящий момент, определённые кванты времени, длина и количество которых определяется его приоритетом. Поэтому объём работы, который приложение может выполнить, определяется тем, сколько таких квантов оно сможет получить в единицу времени. Для операционной системы каждый поток является самостоятельной задачей, которой выделяются кванты времени на общих основаниях. Поэтому приложение Delphi, умеющее создать несколько потоков, получит больше времени операционной системы, и соответственно сможет выполнить больший объём работы.

  Создать дополнительный поток в Delphi поможет объект TThread. Ввести объект TThread в программу можно двумя способами:

  1. С помощью Мастера
  2. Вручную
  1. Мастер создания дополнительного потока в Delphi создаёт отдельный модуль, в рамках которого выполняется поток. Выполним:

  File -> New -> Other...

В появившейся табличке выбора найдём TThread Object. Появится окошко, в верхнюю строку которого (Class Name) введём имя нашего будущего потока: MyThread. В результате будет создан модуль, содержащий заготовку кода, реализующего дополнительный поток Delphi:
unit Unit2; // Имя модуля, содержащего поток. При сохранении его можно изменить.

interface

uses
	Classes;

type
	MyThread = class(TThread) //MyThread - заданное нами имя потока.
	private
		{ Private declarations }
	protected
		procedure Execute; override;
	end;

	implementation

	{ Important: Methods and properties of objects in visual components can only be
	  used in a method called using Synchronize, for example,

	Synchronize(UpdateCaption);

	  and UpdateCaption could look like,

	procedure MyThread.UpdateCaption;
	begin
		Form1.Caption := 'Updated in a thread';
	end; }

	{ MyThread }

	procedure MyThread.Execute;
	begin                                                                                   
		{ Place thread code here }
	end;

end.

  2. В первом способе класс MyThread был создан мастером в дополнительном модуле. Второй способ состоит в том, что мы сами создаём такой класс в рамках одного из уже существующих модулей программы, например, в модуле Unit1:

unit Unit1; //Обычный модуль в котором описывается основная программа

interface

uses
	Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
	Dialogs, StdCtrls;

type
	TForm1 = class(TForm)
		Button1: TButton;
		procedure Button1Click(Sender: TObject);
	private
		{ Private declarations }
	public
		{ Public declarations }
	end;

	//Здесь необходимо описать класс TMyThread:
	TMyThread = class(TThread)
	private
		{ Private declarations }
	protected
		procedure Execute; override;
	end;

var
	Form1: TForm1;
	//Нужно ввести переменную класса TMyThread
	MyThread: TMyThread;

implementation

{$R *.dfm}

//Нужно создать процедуру Execute, уже описанную в классе TMyThread
procedure TMyThread.Execute;
begin
	Здесь описывается код, который будет выполняться в потоке
end;



  Если поток создаётся мастером, т.е. в другом модуле, то не забудьте в основном модуле описать переменную - экземпляр потока, как указано выше. Также, поскольку класс потока описан в другом модуле, имя этого модуля необходимо добавить в секцию uses. Теперь можно запускать поток, даже если в его процедуре Execute нет ни единого оператора.



   О том как использовать потоки в следующем уроке.

Удачи!
Встретимся в следующем уроке!


Источник: www.thedelphi.ru
Автор: Савельев Александр
Опубликовано: 21 Июня 2013
Просмотров: 9127

Урок 52 - Исключительные ситуации Урок 54 - Потоки в Delphi, (часть 2/3)

Зарегистрируйтесь или авторизуйтесь, чтобы добавлять комментарии.



аватар Добавил(а): Lammer [Новичок] Дата: 2013-09-14
у меня такой вопрос,чем легче создовать потоки мастером или же в ручную и еще один вопрос если я пользуюсь мастером то мне только остаеться написать (к примеру гет запрос)в процедуру procedure MyThread.Execute; и все???или еще что то нужно добавить




аватар Добавил: Admin [Сэнсэй] vk.com/savelev_a_y Дата: 2013-09-19
Да