Предисловие
В цикле заметок пойдет речь о создании приложений с использование библиотеки OmniThreadLibrary (http://otl.17slon.com/index.htm). Данная библиотека облегчает создание многопоточных приложений в среде Delphi и предоставляет программисту простые и гибкие возможности по работе с фоновыми задачами, чем стандартный класс TThread. Данная цикл заметок предоставляет из себя материал, взятый из официальной документации, блога автора библиотеки, комментарий читателей блога и своих наблюдений. Фактически мной произведена некоторая систематизация материала (библиотека находится в постоянной разработке и от версии к версии часто видоизменяется, поэтому официальная документация страдает пробелами и изъянами) и выполнено дополнительное комментирование некоторых частей официальной документации, где по-моему мнению не хватает более подробного материала.
Hello Word
Ну, какой же программист не писал “Hello Word”, сделаем это и мы, наш пример должен уметь создавать простейшую фоновую задачу с помощью OTL в которой будет проигран звук.
Начнем с создания нового Delphi VCL приложения. Переместите кнопку на форму и создайте обработчик события onClick
procedure TfrmTestOTL.btnBeepClick(Sender: TObject);
begin
CreateTask(Beep, 'Beep').Run;
end;
Это создаст потоковую задачу с именем 'Beep' и главным методом Beep. Этот код создаст новый поток и запустит выполнение этой задачи в контексте вновь созданного потока. Это все!
Что бы сделать пример полнофункциональным, добавьте модуль OtlTask в раздел uses и создайте метод Beep.
procedure TfrmTestOTL.Beep(task: IOmniTask);
begin
MessageBeep(MB_ICONEXCLAMATION);
end;
Запустите программу, нажмите на кнопку. Прозвучит звук.
Если вы не верите, что этот код выполняется в фоновом потоке, создайте точку останова на вызове MessageBeep и проверьте окно Thread Status. Она ясно показывает, что точка останова находиться во втором потоке. Данный пример находится в папке tests\0_Beep библиотеки OTL.
Как видите простое многопоточное приложение создать не сложно. Я думаю, код в пару строк для реализации нужной простой функциональности довольно неплохое начало для знакомства с OTL.
Комментариев нет:
Отправить комментарий