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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.01.2013, 18:23   #1
DrBAXA
Пользователь
 
Регистрация: 17.12.2012
Сообщений: 24
По умолчанию Ожидание завершения

Есть вот такой код
Код:
  Proc:=CreateProcess(PWideChar(self.AModemDev[N].ACMDPath),nil,nil,nil,true,NORMAL_PRIORITY_CLASS, nil, nil, StartUpInfo, ProcessInfo);
  WaitforSingleObject(ProcessInfo.hProcess, INFINITE);
Есть несколько потоков с таким кодом.
Все красиво работаєт но при виключенний проги нужно долго ждать завершения всех потоков. Прога которая здесь запускаєтся может успешно и сама доработать.
Можно ли как то прервать ето ожидание при закритии моєй програми???
DrBAXA вне форума Ответить с цитированием
Старый 26.01.2013, 19:13   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Есть несколько потоков с таким кодом.
Тоесть? Если они и правда в потоке то ожидания в главном потоке быть не должно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.01.2013, 19:27   #3
DrBAXA
Пользователь
 
Регистрация: 17.12.2012
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Тоесть? Если они и правда в потоке то ожидания в главном потоке быть не должно.
в главном потоке ожидания и нет. Оно появляетса когда закриваеш прогу, нужно же завершить все потоки.
DrBAXA вне форума Ответить с цитированием
Старый 26.01.2013, 20:26   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
в главном потоке ожидания и нет. Оно появляетса когда закриваеш прогу
А прогу ты закрываешь именно из главного потока.
При закрытии останавливай все потоки функой TerminateThread().
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.01.2013, 20:41   #5
DrBAXA
Пользователь
 
Регистрация: 17.12.2012
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А прогу ты закрываешь именно из главного потока.
При закрытии останавливай все потоки функой TerminateThread().
Да прогу закриваю с главного потока.
А остальние потоки Potok_1.Terminate;
Но прога все равно ожидает.
Есть разница между
PHP код:
Potok_1.Terminate 
и
PHP код:
TerminateThread() 
DrBAXA вне форума Ответить с цитированием
Старый 26.01.2013, 20:44   #6
DrBAXA
Пользователь
 
Регистрация: 17.12.2012
Сообщений: 24
По умолчанию

К стати а главний поток ожидае завершения потока при Potok_1.Terminate если ето обрабативается в цикле, или переходит к следующему сразу?
DrBAXA вне форума Ответить с цитированием
Старый 26.01.2013, 21:12   #7
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
По умолчанию

Цитата:
Есть разница между
PHP код:
Potok_1.Terminate
и
PHP код:
TerminateThread()
Конечно, что есть
В первым случаи присваиваеться полю значение Terminated:=True; Поток при этом не остановиться.
TerminateThread же остановить поток по дескриптору потока, который вы укажете в параметре(Handle).
Delphi_ProGer вне форума Ответить с цитированием
Старый 26.01.2013, 21:28   #8
DrBAXA
Пользователь
 
Регистрация: 17.12.2012
Сообщений: 24
По умолчанию

Когда я так(TerminateThread ) убю поток, дание класа останутса? И можно ли будет снова ево запустить?
DrBAXA вне форума Ответить с цитированием
Старый 26.01.2013, 21:42   #9
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
По умолчанию

Цитата:
Сообщение от DrBAXA Посмотреть сообщение
Когда я так(TerminateThread ) убю поток, дание класа останутса? И можно ли будет снова ево запустить?
Да, останутся, будет утечка памяти. Лучше тогда Terminated:=True. Но вы сами должны проверять значение Terminated и сами освобождать обьекты.
Delphi_ProGer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ожидание завершения потоков Voody Общие вопросы Delphi 11 14.06.2016 06:10
мультипоточное ожидание Fun_tick C# (си шарп) 5 05.03.2012 15:00
Ожидание завершения потока при выключении службы 3D Hunter Общие вопросы Delphi 15 27.08.2011 14:55
ожидание завершения работы макроса -Anton- Microsoft Office Excel 15 18.06.2011 18:17
Ожидание завершения процесса Человек-Ололо Общие вопросы Delphi 2 08.03.2010 19:39