Процессы в BCB6

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

Сообщение Algorithm » Пт ноя 11, 2005 8:51 pm

Положим в программе при нажатии кнопки "Start" запускается процесс. Я хочу, чтобы после нажатия кнопки "Pause" этот процесс приостановился. Но после запуска я не могу нажимать никаких кнопок до окончания процесса. Кто-нибудь подскажите, как нужно описать процесс, чтобы реализовать описанную выше ситуацию.
Algorithm
Призывник
 
Сообщений: 3
Зарегистрирован: Пт ноя 11, 2005 8:43 pm
Пункты репутации: 0

Сообщение Last Undead » Пт ноя 11, 2005 9:17 pm

Винапи
wm_process_sendmessage() или что-то вроде того.
Смотри в MSDN.
А чтобы приостановить процесс афаик надо будет потоки заюзать, и использовать thread suspend.
Last Undead
Призывник
 
Сообщений: 4
Зарегистрирован: Вт ноя 08, 2005 9:43 pm
Пункты репутации: 0

Сообщение Night Angel » Пт ноя 11, 2005 9:19 pm

2Algorithm
Ты что-то неправильно делаешь. С какой стати ты не можешь кнопки нажимать?
Auscultura et perpende - Выслушай и взвесь
Теперь я есть в <a href='http://www.livejournal.com/users/mrnight/' target='_blank'>LJ</a>
Night Angel
Полковник
 
Сообщений: 1160
Зарегистрирован: Ср сен 25, 2002 7:20 pm
Откуда: Belarus
Пункты репутации: 0

Сообщение Last Undead » Пт ноя 11, 2005 9:25 pm

2Night Angel:
А с какой стати он должен мочь нажимать эту кнопку? Судя по описанию, приложение однопоточное, и естественно во время работы внутреннего процесса gui не отвечает. Поэтому этот процесс и должен посылать сообщение о своём состоянии, особенно если это цикл.
Last Undead
Призывник
 
Сообщений: 4
Зарегистрирован: Вт ноя 08, 2005 9:43 pm
Пункты репутации: 0

Сообщение Algorithm » Пт ноя 11, 2005 9:25 pm

А как вызвать функцию API в BCC.
Я создал Thread Object, и запустил процесс как в примере по beginthread, возможно что-то с приоритетом, но я пробовал и tpIdle для процесса.
Algorithm
Призывник
 
Сообщений: 3
Зарегистрирован: Пт ноя 11, 2005 8:43 pm
Пункты репутации: 0

Сообщение Night Angel » Сб ноя 12, 2005 4:13 pm

Понятия потока и процесса различаем?
Потоки (и процессы тоже) выполняются независимо друг от друга, если не предусмотрена синхронизация.
У автора, судя по всему, после старта дочернего потока родительский поток одидает завершения дочернего. Почему? Надо смотреть код.

Вот для примера накатал тут <a href='http://gymnasist2003.narod.ru/threads.rar' target='_blank'>программку</a>. Можете запустить и посмотреть. Она просто считает фактириал числа в отдельном потоке, причём этот поток можно приостановить и возобновить. Исходники в том же архиве.
Последний раз редактировалось Night Angel Сб ноя 12, 2005 6:26 pm, всего редактировалось 1 раз.
Auscultura et perpende - Выслушай и взвесь
Теперь я есть в <a href='http://www.livejournal.com/users/mrnight/' target='_blank'>LJ</a>
Night Angel
Полковник
 
Сообщений: 1160
Зарегистрирован: Ср сен 25, 2002 7:20 pm
Откуда: Belarus
Пункты репутации: 0

Сообщение Last Undead » Сб ноя 12, 2005 8:16 pm

2Night Angel
Не помню точно как в билдере, но в дельфях даже при юзании тредов надо было дочернему посылать sendmessage, а то не реагировало. Издержки VCL. Хотя, может статься, я и неправ...
Исходники в студию!.. :-)
<!--QuoteBegin-Night Angel+Nov 12 2005, 22:13--><div class='quotetop'>QUOTE(Night Angel @ Nov 12 2005, 22:13)</div><div class='quotemain'><!--QuoteEBegin-->Auscultura et perpende - Выслушай и взвесь
[right][snapback]191585[/snapback][/right]
<!--QuoteEnd--></div><!--QuoteEEnd-->
Воистину =)
Last Undead
Призывник
 
Сообщений: 4
Зарегистрирован: Вт ноя 08, 2005 9:43 pm
Пункты репутации: 0

Сообщение Algorithm » Вс ноя 13, 2005 8:33 pm

OK. Ошибка была в том, что в Execute процесса я выполнял Synchronize, сейчас всё работает.
Algorithm
Призывник
 
Сообщений: 3
Зарегистрирован: Пт ноя 11, 2005 8:43 pm
Пункты репутации: 0


Вернуться в Программирование

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

cron