![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 15.08.2012
Сообщений: 39
|
![]()
Всем здравствуйте, не могу понять, почему при нажатии на кнопку пауза (заморозка потоков) иногда виснет программа. Программа делает запросы на сервер, использую Indy и работает в 100 - 250 потоков. Потоки создаю динамически через класс TThread и держу их в массиве. Подскажите пожалуйста в чем может быть причина зависания и как это исправить.
Заранее спасибо. вот код кнопки пауза: Код:
|
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 07.12.2011
Сообщений: 1,025
|
![]()
бить за такое
Код:
for i:=0 to Length(CtThreads) ???-1???do
Не стесняемся, плюсуем!
![]() |
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
![]()
Наверно try except это следствие второй ошибки с длиной массива
![]() Автор не понял ее, испугался, и стал глотать исключения.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 15.08.2012
Сообщений: 39
|
![]()
Спасибо за отклик, ну хорошо, а что тогда здесь не так.
Вот как я создаю потоки: Код:
Не могу понять... Иногда жму кнопку по 10 раз и все норм, ничего не виснет, а иногда нажму и виснет вся программа... Подскажите что мне нужно сделать чтобы не было зависания. Спасибо. Код:
|
![]() |
![]() |
![]() |
#5 | |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
![]()
Я бы попробовал какой-то другой способ паузы.
Никогда не использовал нигде Suspend и в документации пишут, что Цитата:
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
|
![]() |
![]() |
![]() |
#6 | |
Пользователь
Регистрация: 15.08.2012
Сообщений: 39
|
![]() Цитата:
![]() Можете пожалуйста подсказать способ) Если не трудно. Или может ссылку на статью, там где рассказывают как правильно морозить потоки. Спасибо. Последний раз редактировалось Lifeda92; 23.10.2013 в 18:50. |
|
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
![]()
Смотря что вы там делаете. Может лучше убивать и пересоздавать (остановить/запустить, паузу убрать).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 15.08.2012
Сообщений: 39
|
![]()
У меня есть кнопка стоп, но я не хотел бы убирать паузу(
|
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 15.08.2012
Сообщений: 39
|
![]()
В потоках, я шлю запросы на сервер и обрабатываю ответы от сервера.
|
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
![]()
В потоке что именно делаете? Код бы посмотреть.
Можно добавить свойство типа IsPaused: boolean (и наверно стоит сделать работу с ним TCriticalSection), при паузе ставить его в True и в потоках переодически проверять и делать что-то типа Код:
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сделать программу многопоточной (достаточно двух потоков). Delphi | user_12 | Помощь студентам | 0 | 27.12.2011 20:40 |
Проблема синхронизации потоков | Teor | Общие вопросы .NET | 4 | 17.06.2011 15:50 |
Поисковик по маске. Использование потоков в среде(tthread) Delphi. | lnikon | Общие вопросы Delphi | 1 | 22.07.2010 19:31 |
Реализация двух потоков, работа с буфером, механизм семафоров (С++ или Delphi) | shoonya | Помощь студентам | 0 | 05.04.2010 14:08 |
delphi теория потоков | tanek | Помощь студентам | 0 | 19.03.2010 19:40 |