Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2010, 13:53   #1
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию Приостановка\продолжение потока

Есть функция которая вызывает паузу или продолжение потока при нажатие по кнопке:
procedure TForm1.Button4Click(Sender: TObject);
var i:integer;
begin
paused := not paused; //меняем значение на противоположное
if paused then
for i:=0 to kthreads do SuspendThread(tid[i])
else
for i:=0 to kthreads do ResumeThread(tid[i]);
end;
end;
Но как прописать что бы пауза срабатывала в потоке, а продолжение при нажатии кнопки?
bulldog5293 вне форума Ответить с цитированием
Старый 20.09.2010, 14:43   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

всмысле пауза в потоке?
чтоб поток сам себя остановил или что?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.09.2010, 14:51   #3
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию

Да просто есть действие на которое должен ответить пользователь, хотел вначале поставить sleep, но проблемма в том что поток должен встать на заморозку и дождаться пока пользователь его сам разблокирует, тоесть при нажатии кнопки и продолжить своё выполнение
bulldog5293 вне форума Ответить с цитированием
Старый 20.09.2010, 20:05   #4
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию

Или всё же в таких ситлуациях применять синхронизацию, но как тогда держать приостановленным поток до нажатия кнопки
bulldog5293 вне форума Ответить с цитированием
Старый 20.09.2010, 20:15   #5
SkrudjMakdak
Форумчанин
 
Регистрация: 14.04.2010
Сообщений: 145
По умолчанию

procedure TCountObj.Execute;
begin
...
Suspended:=true;
...
end;

Последний раз редактировалось SkrudjMakdak; 20.09.2010 в 20:17.
SkrudjMakdak вне форума Ответить с цитированием
Старый 20.09.2010, 20:16   #6
SkrudjMakdak
Форумчанин
 
Регистрация: 14.04.2010
Сообщений: 145
По умолчанию

или Suspend;
SkrudjMakdak вне форума Ответить с цитированием
Старый 20.09.2010, 21:47   #7
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
Сообщение от bulldog5293 Посмотреть сообщение
Или всё же в таких ситлуациях применять синхронизацию, но как тогда держать приостановленным поток до нажатия кнопки
Лучше применять синхронизацию.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Приостановка выполнения цикла ACE Valery Общие вопросы C/C++ 21 19.11.2011 12:40
приостановка программы Medwedxxx Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 28.07.2010 10:42
Приостановка цыкла for to do и дальнейшее продолжение работы s1d0r Общие вопросы Delphi 4 27.05.2009 16:58
приостановка выполнения процедуры BESS Общие вопросы Delphi 5 15.09.2008 00:53
Приостановка программы Hintman Общие вопросы Delphi 6 14.04.2007 23:38