![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Выполняю некое действие в потоке. Необходимо, что бы пользователь ввел некоторые данные, что бы был достигнут нужный результат.
Как приостановить поток до ввода данных, а после ввода - продолжить? |
|
#2
|
||||
|
||||
|
Suspend, Resume.
|
|
#3
|
|||
|
|||
|
Можно немного подробнее?
К примеру, создал я поток Код:
POTOK=class(TThread)
Private
Protected
Procedure Execute; override;
Public
Constructor Create(CreateSuspended: boolean);
end;
Нажав заветную комбинацию клавиш я получил - Код:
constructor POTOK.Create(CreateSuspended: boolean); begin inherited Create(CreateSuspended); end; Ну и сам код потока Код:
procedure POTOK.Execute; begin //исполняемый код end; Запускаю поток - Код:
POTOK.Create(false); На форме у меня 2 кнопки. Поток запускаю, необходимо ввести данные, ввод осуществляется посредством нажатия второй кнопки, поток продолжается. Как это реализовать с помощью Suspend, Resume ? Последний раз редактировалось Zo_Omer, 08.08.2012 в 10:03. |
|
#4
|
|||
|
|||
|
Разобрался сам.
В потоке создал бесконечный цикл while b do //b - bool; После ввода данных изменял b на false, цикл завершался, поток продолжался. Все переменные в таком случае должны быть глобальные |
|
#5
|
|||
|
|||
|
интересно, а запустить поток после ввода данных почему нельзя было?
|
|
#6
|
||||
|
||||
|
Цитата:
|
|
#7
|
|||
|
|||
|
Дело в том, что я потоки толком не изучал... И пока что так сделать мне будет гораздо удобнее. Да и результат в принципе одинаковый.
|
|
#8
|
|||
|
|||
|
всё таки не интересно, что поток делает перед циклом while do такого, что нельзя было само создание потока произвести, после того, когда данные уже введены пользователем...
|