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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.08.2008, 11:43   #1
Denager
Москоу
Форумчанин
 
Регистрация: 29.01.2008
Сообщений: 138
По умолчанию Использование метода free после завершения потока

Создаю поток, использую WinAPI

Код:
rssi_thread:=CreateThread(nil,0,@RSSI,nil,0,rssi_cardinal);
еси в потоке создается объект например Ping:=TPing.Create; А затем если мне нужно убить поток...При нажатии на Буттон напрмиер идет такой код
Код:
TerminateThread(rssi_thread,0);
Далее Ping.free нужно прописывать до, после или он сам убьется при уничтожении потока?
Denager вне форума Ответить с цитированием
Старый 28.08.2008, 17:22   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Само ничего не происходит. Если программист не написал, то лишнего происходить не будет. И если было создано в потоке ( объект ) то желательно в потоке и прикратить его существование
BOBAH13 вне форума Ответить с цитированием
Старый 29.08.2008, 07:16   #3
Denager
Москоу
Форумчанин
 
Регистрация: 29.01.2008
Сообщений: 138
По умолчанию

BOBAH13, логично, значит До
Но если у меня постоянное обращение будет к Ping и, возможно, что я выполню Ping.free, и и не успев завершиться
Код:
TerminateThread(rssi_thread,0);
в этом же потоке произойдет обращение к
Код:
Ping.Ping(Host);
, но т.к. я Ping уже уничтожил, вывалится ошибка.
Просто у меня во время остановки потока, програма бывает, что падает - думаю, что возможно из-за такой ситуации.
Если я что-то напутал, поясните, пожалуйста
Denager вне форума Ответить с цитированием
Старый 29.08.2008, 09:28   #4
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

ну если доступ в коде к Ping есть везде почему тогда нельзя сделать так ?

Код:
// где-то до создания Ping инициализируем
Ping := NIL;
// потом где-то где разрушаем
if (Ping <> NIL) then
begin
  Ping.Free;
  Ping := NIL;
end;
Вот и все... если поняли идею... то такие вставки совершат революцию
BOBAH13 вне форума Ответить с цитированием
Старый 29.08.2008, 10:13   #5
Denager
Москоу
Форумчанин
 
Регистрация: 29.01.2008
Сообщений: 138
По умолчанию

Спасибо, идея, конечно, понятна
Подправлю код
Denager вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ищу художника для завершения проекта! Kostia Фриланс 6 31.05.2013 18:42
Перехват завершения работы ОС vynt Win Api 7 19.05.2008 08:59
Ждать завершения чужого процесса ERASERROR Win Api 2 04.02.2008 08:23
Уравнение метода итераций SPQR Помощь студентам 2 12.11.2007 01:26
Вызов Метода из др. модуля Mickle Общие вопросы Delphi 2 10.05.2007 23:41