![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| InfectedM |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 21.10.2007 Репутация: нет Всего: нет |
при нажатии на кнопку создаеться столько потоков сколько существует записей в memo1
допустим я создал 50 потоков. 1)как мне остановить вручнудю все эти 50 потоков и удалить их? 2)чтобы потоки удалились нужно в конце писать self.Terminate; self.free; ? или он сам удаляеться 3)как остановить например только 10-ый поток? подскажите пожалуйса.
|
||||
|
|||||
| Nofate |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 266 Регистрация: 13.10.2008 Репутация: нет Всего: 8 |
1. Для этого нужно хотя бы куда-то запомнить эти потоки, чтобы обращаться к ним впоследствии.
Конечно, лучше хранить их в списке или как-то еще, но это уже зависит от конкретной задачи. 2. Terminate вызывается извне для остановки потока (см пункт 3). Free вызывается на том же уровне, где вы создали поток (например при закрытии окна, если дочерние потоки больше не нужны). Есть еще Suspend - он приостанавливает поток и выполнение дальше можно продолжить через Resume. 3. Как следствие п1. и п.2:
-------------------- The future is not set, there is no fate but what we make for ourselves. Нофейтово пространство и смежные области |
||||
|
|||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: нет Всего: 50 |
Nofate, а так можно (если FreeOnTerminate := true;)? |
|||
|
||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 6 Всего: 50 |
Нет. В этом случае рискуешь обратиться к методу WaitFor уже после того, как TThread уничтожится. -------------------- |
|||
|
||||
| InfectedM |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 21.10.2007 Репутация: нет Всего: нет |
создаю один поток threads[1]
memo1 начинает заполняться.....
тыкаю на кнопку : threads[1].Suspend; - поток останавливается. Тыкаю на threads[1].resume; он снова запускатся,все работает отлично. затем я его останавливаю и пытаюсь удалить через threads[1].terminate; . но ничего не удаляеться(( после нажатия на resume он опять продолжает работать подскажите что не так |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: нет Всего: 50 |
Как ты думаешь, это бесконечный цикл или нет? |
|||
|
||||
| InfectedM |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 21.10.2007 Репутация: нет Всего: нет |
во время выполнения цикла нельзя удалить поток? как тогда цикл остановить можно в потоке по моему запросу? Это сообщение отредактировал(а) InfectedM - 10.2.2010, 18:28 |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: нет Всего: 50 |
Добавлено через 2 минуты и 34 секунды Посмотри исходники класса TThread и его метода Terminate |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |