програми та розробка програмного забезпечення
демонстраційний багатопотоковий додаток delphi
У додатку, що розробляється реалізується демонстрація роботи багатопотокового додатку на прикладі послідовного зростання чисел від 1 до 20.
Користувач має можливість запуску потоку, припинення та поновлення потоку, а також зупинки запущеного потоку зі збереженням поточного стану у файл і подальшого завантаження і продовження потоку з збереженого стану.
У окремому потоці відбувається зміна чисел, шляхом послідовного зростання від 1 до 20.
У файл зберігається значення змінних потоку в момент його зупинки та збереження. І витягуються з нього при завантаженні збереженого потоку.
У відповідності з необхідними вимогами для реалізації багатопотокового додатки був використаний компонент TThread.
Додаток складається з 3-х модулів (unit). Два з яких містять форми і один (модуль) - потік TMyThread.
Лістинг програми наведено у додатку А.
При розробці програмного забезпечення були використані наступні команди і дії:
· Створили потік класу TThread: TMyThread=class (TThread).
· Описали клас TThread: procedure TMyThread.Execute.
· Створили на формі поле Мemo, в якому буде відображатися потік.
· Для реалізації запуску, зупинення та поновлення потоку, а також зупинки, збереження і завантаження збереженого потоку реалізовано наступне меню, що складається з 5 основних кнопок:
«Запуск» - запускає потік;
«Пауза» - «Продовжити» - призупиняє і відновлює потік;
«Зупинка» - зупиняє і зберігає потік;
«Зберегти» - зберігає потік;
«Завантаження» - завантажує збережений потік.
Для того, щоб користувач не натиснув кнопку в момент, коли вона не може виконати свою дію, кнопки робляться активними лише коли їх дія може бути виконана без помилок.
· Додали модуль SyncObjs, в якому знаходяться класи для реалізації синхронізації.
· Використовували клас Tcriticalsection. Цей клас дозволяє нам виконувати тільки один потік. При використанні декількох потоків він дає можливість завершитися першому потоку, після чого буде розпочато другий потік.
· Для того, щоб зберегти дані з поля Мemo ми використовували рядок Memo1.Lines.SaveToFile (ExtractFilePath (Application.ExeName) + Save.txt '); де ExtractFilePath (Application.ExeName) - це шлях до нашого проекту.
· Для зручності також були створені ще 2 форми, в одній формі йде запит на збереження, а в іншій - докладна інформація про програму.
. 4 Опис користувальницького інтерфейсу
В інтерфейсі проекту використовуються компоненти Delphi: Button, Memo, Label, SpinEdit.
Label - призначений для відображення статичного тексту, тобто написів і позначок на Формі, які не змінюються протягом усього часу роботи программи.- використовується для введення великих обсягів текста.- використовується для реалізації в програмі команд з допомогою обробника події OnClick цього компонента.- являє собою поєднання Edit і UpDown, оформлене як окремий тип компонента.
При запуску проекту ми потрапляємо на наступну форму:
Рис.1. Запуск проекту.
Далі при натисканні на кнопку «Запуск» відбувається запуск потоку шляхом послідовного зростання чисел від 1 до 20.
Рис.2. Запуск потоку.
Запущений потік можна призупинити, натиснувши на кнопку «Пауза», після чого кнопка «Пауза» змінюється на кнопку «Продовжити», при натисканні на яку потік поновлюється.
Рис.3. Призупинення потоку.
Рис.4. Поновлення потоку.
Запущений потік можна зупинити і зберегти, натиснувши на кнопку «Зупинка», після чого з'являється вікно про збереження потоку. При натисканні на кнопку «Так» потік зберігається. Можна відмовитися від збереження потоку, натиснувши на кнопку «Ні». Згодом зупинений потік можливо зберегти при натисканні на кнопку «Зберегти».
Рис.5. Зупинка і збереження потоку.
Збережено потік можливо завантажити з стану, з якого він був зупинений, і продовжити, натиснувши на кнопки «Завантажити» і «Запуск».
Рис.6. Завантаження записаного потоку.
Рис.7. Продовження потоку з збереженого стану. ...