Разное
Облака / Clouds
The bast cloud service
Get 20 GB free!!!
Support WebDav.
Show more >>
time-tested cloud storage
Support WebDav.
Последние книги
Самое популярное
Все бесплатно
Все ссылки на файлы, расположенные на страницах сайта, добавлены пользователями и доступны для бесплатного скачивания. За содержание этих файлов администрация сайта ответственности не несет.
Навигация
Вопросы
Найти все компьютеры в сети
Категория: Интернет и Сети
Категория: Интернет и Сети
Фреймы
Категория: Компоненты
Категория: Компоненты
Распознавание кодировки. Перекодировка.
Категория: Текст и строки
Категория: Текст и строки
Listbox - элементы вверх-вниз
Категория: Компоненты
Категория: Компоненты
Поставить пароль на Paradox
Категория: Базы данных
Категория: Базы данных
Сохранение странички в файл из TWebBrowser
Категория: Интернет и Сети
Категория: Интернет и Сети
Как нарисовать календарь
Категория: Текст и строки
Категория: Текст и строки
Определение размера каталога
Категория: Файловая система
Категория: Файловая система
Шифрование текста по паролю
Категория: Текст и строки
Категория: Текст и строки
Узнать запущен ли сервис FireBird
Категория: Интернет и Сети
Категория: Интернет и Сети
Delphi - Справочник: TThreadFunc
TThreadFunc
|
type TThreadFunc : Function(Parameter : Pointer) : Integer; |
Тип (Unit System)
|
Определяет функцию, которая будет вызвана BeginThread
|
Описание:
|
Тип TThreadFunc определяет функцию, а не данные. Эта функция обычно используется как параметр для запроса функции BeginThread при запуске отдельного потока операции. Определенная функция исполняет действия потока. Код возврата для функции это код завершения для потока. |
Пример кода: Простой пример
|
// Полный код Модуля. // ----------------------------------------------------------- // Вы должны поместить этот код в модуль с именем Unit1 и с формой // названную Form1, которая имеет событие OnCreate названное FormCreate. unit Unit1; interface uses Forms, Dialogs, Windows, SysUtils; type TMsgRecord = record thread : Integer; msg : string[30]; end; TForm1 = class(TForm) procedure FormCreate(Sender: TObject); end; var Form1: TForm1; Implementation {$R *.dfm} // Вложение определений формы ThreadVar // Мы должны позволить каждому потоку его собственные образцы // переданной переменной записи msgPtr : ^TMsgRecord; // Частная поточная процедура для показа строки function ShowMsg(Parameter : Pointer) : Integer; begin // Устанавливаем 0 возвращаемому значению Result := 0; // Устанавливаем указатель на переданные данные // Обратите внимание, что каждый поток имеет отдельную копию msgPtr msgPtr := Parameter; // Показ этого сообщения ShowMessagePos('Thread '+IntToStr(msgPtr.thread)+' '+msgPtr.msg, 200*msgPtr.thread, 100); // Конец потока EndThread(0); end; procedure TForm1.FormCreate(Sender: TObject); var id1, id2 : LongWord; thread1, thread2 : Integer; msg1, msg2 : TMsgRecord; showMsgFunc : TThreadFunc; begin // Установите поточную функцию showMsgFunc := Addr(ShowMsg); // Устанавливаем наши отображаемые сообщения msg1.thread := 1; msg1.msg := 'Hello World'; msg2.thread := 2; msg2.msg := 'Goodbye World'; // Запуск выполнения первого потока, спрашивающего имя пользователя thread1 := BeginThread(nil, 0, showMsgFunc, Addr(msg1), 0, id1); // Спрашиваем также и фамилию thread2 := BeginThread(nil, 0, showMsgFunc, Addr(msg2), 0, id2); // Гарантируйте, что потоки будут закрыты только когда всё сделано ShowMessagePos('Нажмите это, когда другие диалоги закончились.', 200, 300); // Наконец, очищаем, закрывая потоки CloseHandle(thread1); CloseHandle(thread2); end; end.
Результат:
|
Три диалога отобразят: Thread 1 Hello World Thread 2 Goodbye World Нажмите это, когда другие диалоги закончились. |