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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2011, 14:17   #21
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Я не сразу понял, что поток пытается убить себя из метода который вызвал, но не закончил.

Поступил чуть проще, в stop просто посылал Terminate(На всякий), а в старт, без проверки на nil, создавал новый обьект.

Кстати вопрос, ведь старый обьект не уничтожен, а на его место уже метит новый.
Получается потеряв старый обьект(заменив новым), утекает память.
Или утекать ничего не будет т.к. старый завершит свой код пойдёт лесом?

Теперь другоя проблема вся в той же сфере.
Вы говорили, что нужно сделать проверку на обрыв связи и реконнект. Хоть убей, перерыл весь idUDPServer - по нулям.

Последний раз редактировалось Человек_Борща; 29.11.2011 в 14:33.
Человек_Борща вне форума Ответить с цитированием
Старый 29.11.2011, 16:00   #22
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

Итак, по порядку:

1. Метод Terminate не уничтожает поток и ничего не говорит вообще, если у вас в коде не делается проверка на булево свойство Terminated, например в цикле. Terminate устанавливает свойство Terminated в true, и всего то.

2. Создание нового экземпляра класса в деструкторе объекта и присвоение его той же самой переменной допустимо, ведь переменная это только 4хбайтный указатель на точку входа объекта, расположенного в куче. А уничтожаемый объект корректно завершит свое существование. Объект в памяти один физически, а вот переменных типа этого объекта, ссылающихся на него, может быть сколько угодно. И если уничтожить объект через одну переменную, то и остальные станут ссылаться вникуда. Так что тут у вас все нормально.

3. Я предпочитаю работать с библиотекой Synapse. Она полегче, стабильная, робит под Delphi 2009+ и бесплатна:
http://synapse.ararat.cz/
Пасдоковскую документацию и примеры там же найдете. С Indy не сталкивался, потому придумывать не стану ничего.
"ковыряю изнутри" (с)

Последний раз редактировалось 3D Hunter; 29.11.2011 в 16:04.
3D Hunter вне форума Ответить с цитированием
Старый 30.11.2011, 01:28   #23
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

в синапсе не нашёл ничего связанного именно с UDP
Человек_Борща вне форума Ответить с цитированием
Старый 30.11.2011, 09:18   #24
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

http://www.webdelphi.ru/poisk/
Ищите по ключевому слову "Synapse". Лучшего блога я в сети не нашел.
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
при закрытии потока(Tthread) посылать на форму код ответа или сообщение Человек_Борща Общие вопросы Delphi 2 14.12.2010 21:19
Работа с TThread pesi Общие вопросы Delphi 2 09.08.2010 14:12
TThread Vladislav_I Общие вопросы Delphi 0 30.04.2010 19:47
Ошибка при OpenDialog.Execute ymka2 Общие вопросы Delphi 10 27.11.2009 14:15
TThread и GUI Freezer Общие вопросы Delphi 8 05.08.2009 11:50