20 / 19 / 2
Регистрация: 27.06.2008
Сообщений: 105
|
|
1 | |
Про потоки08.07.2008, 01:04. Показов 2628. Ответов 10
Метки нет (Все метки)
Если я к проге приделал два потока (Thread), один другому не будет мешать?
Просто когда я в проге запускаю один поток, все норм.. как только запускаю второй.. первый игнорится начинает.. Если мешают, как обойти???
0
|
08.07.2008, 01:04 | |
Ответы с готовыми решениями:
10
Про видео и про событие формы) 2 вопроса про цикл и про FileCreate Про потоки Подскажите про потоки |
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
08.07.2008, 01:22 | 2 |
Хм. Это смотря, как ты их делал. может, они к общим данным лезут, может, глобальные переменные, может к ресурсам одним обращаются и т. д. и т. п.
Читай про: 1. семафоры 2. события 3. мьютексы 4. критические секции
0
|
20 / 19 / 2
Регистрация: 27.06.2008
Сообщений: 105
|
|
08.07.2008, 01:27 [ТС] | 3 |
Сделал их File > New > Thread Object =)
В появившемся юните заклепал свой код.. ну есессно объявил его где надо)) получилось два доп. юнита которые вызываются и крутятся в бесконечном цикле.. один ловит сообщения о нажатии на клавиши.. другой прокручивает окна (enumwindow) ну и ловит нужные.. один другому мешать начинает... Если про семафоры и т.д... то можешь ткнуть меня в конкретную статью??
0
|
20 / 19 / 2
Регистрация: 27.06.2008
Сообщений: 105
|
|||||||||||
08.07.2008, 01:46 [ТС] | 5 | ||||||||||
ну в общем смотри ситеуация..
У меня запускается прога и с ней поток, который прокручивает окна (enumwindow), потом если хендл окна совпадает с указанным ранее, то прога заканчивает все свои действа и закрывается.. так вот в время работы проги, нажимается кнопка (пользователем) и запускается поток отлавливания клавиши F11.. ну в первом потоке цикл обеспечивает сама функция enumwindow.. во втором же цикл обеспечивает функция GetMesage Так вот.. когда нажимается кнопка и запускается поток №2 (по клавише), то поток №1 перестает реагировать.. т.е. даже если появляется в в процессе то самое окно которое он ловит, то он не реагирует должным образом((( Вот такие пироги.. там даже памяти нет одинаковой.. работаю с разными вещами даже.. Вот код первого потока: (enumwindows)
0
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
08.07.2008, 02:10 | 6 |
У тебя отладчик перед глазами с билдером. Проверь, работает ли поток вообще.
Интересно...в потоках ищется одно и то же окно, в одном регится хоткей, а в другом уничтожается процесс создавший это окно.
0
|
20 / 19 / 2
Регистрация: 27.06.2008
Сообщений: 105
|
|
08.07.2008, 02:15 [ТС] | 7 |
По отдельности потоки работают..
Добавлено через 4 минуты А потоки работают с одним и тем же окном.. только это окно и есть главная форма)))
0
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
08.07.2008, 12:10 | 8 |
Эм...а зачем регить хоткей на окно, если его процесс убивается?
Я спрашивал не про "по отдельности". А работает ли первый поток, когда второй запущен. То, что нет реакции, это не значит, что не работает. Поставь брейкпойнт там...или вывод какой.
0
|
0 / 0 / 0
Регистрация: 19.04.2015
Сообщений: 1
|
|
08.07.2008, 13:14 | 9 |
Вызов Synchronize() из Execute() это переход в ... основную нить процесса. То есть оба Ваших потока практически всегда выполняются в контексте основной нити. Поэтому и работает только один из них - тот, который раньше вызовет Synchronize().
Так уберите вызов Synchronize().
0
|
20 / 19 / 2
Регистрация: 27.06.2008
Сообщений: 105
|
|
08.07.2008, 15:48 [ТС] | 11 |
0
|
08.07.2008, 15:48 | |
08.07.2008, 15:48 | |
Помогаю со студенческими работами здесь
11
Вопрос про потоки опять про потоки Про потоки с нуля Ищу литературу про потоки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |