![]() |
|
Модераторы: feodorv |
![]()
|
|
| Феликс |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 28.11.2006 Репутация: нет Всего: -3 |
Харэ набивать себе посты! Лучше бы помог! А то тока ля ля да ля ля. |
|||
|
||||
| ptr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 661 Регистрация: 31.5.2006 Где: Новосибирск Репутация: 9 Всего: 14 |
Феликс, показывай код.
-------------------- Единственный способ определить границы возможного - это выйти за эти границы, в невозможное. Артур Кларк. |
|||
|
||||
| Феликс |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 28.11.2006 Репутация: нет Всего: -3 |
Вотъ... реализовал при помощи таймера, но есть проблемы
Работает так как хотелось, но заметил что в памяти, программа начинает расти. По идей тут гдето надо закрывать поток после каждой проверки. Помогите пожалуйста, заранее спасибо! Это сообщение отредактировал(а) Феликс - 5.7.2007, 16:01 |
|||
|
||||
| ptr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 661 Регистрация: 31.5.2006 Где: Новосибирск Репутация: 9 Всего: 14 |
1. Зачем каждый раз инициализировать winsock? Сделай WSAStartup один раз.
2.
Здесь видимо должно быть наоборот. И учитывая предыдущее убери его куда-нибудь в другое место. 3. Sock надо бы в конце закрывать. 4. В OnTimer неплохо бы каждый раз проверять нет ли других потоков, которые были порождены раньше (например флажком). Поток сам завершится при выходе из функции. -------------------- Единственный способ определить границы возможного - это выйти за эти границы, в невозможное. Артур Кларк. |
|||
|
||||
| Феликс |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 28.11.2006 Репутация: нет Всего: -3 |
#Ptr, спасибо за советы, всё раставил на свои места и даже нашел причину, почему в памати программа начинает расти.
Ниже часть кода после наработок:
Всё работает как надо кроме того что память забивается, в особености процесс ускоряется когда порт занет. Причина вот в этих строках:
Помогите! как исправить!? + Как проверить если уже создан поток и как его закрывать? Это сообщение отредактировал(а) Феликс - 5.7.2007, 23:16 |
||||
|
|||||
| witex |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 224 Регистрация: 16.10.2006 Где: Эстония Репутация: 1 Всего: 4 |
птр, зря ты написал WSACleanup() после ретурна, так как процедура очитки не выполнится! Так как поток сразу с ретурном подпрограмма закрывается! ваабще я бы предложил не использовать таймер!
Это каждый раз, отрывать новый поток. Лудше запусти поток при включении проги, и больше и поставь цикл на connect, и просто поставь там sleep(); там уже решишь сколько тебе надо времени поспать! примерно вот так!
Да а память у тебя чётко жрёт из-за рекурсии. потому что процедура ни когда не закрывается! так что тебе достаточно один раз запустить поток вот и всё. У тебя то и твой поток из-за рекурсии не закрывался! Если оставить твой код, то стоит сделать так!
Всё, вроде отписался=)) З.Ы. --------------------
Я не волшебник, я только учусь."Шлёпни в Гугл" - Афтор Былов Ю.М. |
||||
|
|||||
| ptr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 661 Регистрация: 31.5.2006 Где: Новосибирск Репутация: 9 Всего: 14 |
Это не я. Это было в первоначальном коде, а я просто исправил. -------------------- Единственный способ определить границы возможного - это выйти за эти границы, в невозможное. Артур Кларк. |
|||
|
||||
| witex |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 224 Регистрация: 16.10.2006 Где: Эстония Репутация: 1 Всего: 4 |
ясно.
Короче феликс, проверь и отпишись! --------------------
Я не волшебник, я только учусь."Шлёпни в Гугл" - Афтор Былов Ю.М. |
|||
|
||||
| Феликс |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 28.11.2006 Репутация: нет Всего: -3 |
#Witex
Спасибо! Сделал вот так:
Работает! Всем спасибо! P.S: Помогите вот еще по этой теме http://forum.vingrad.ru/forum/topic-162255...troywindow.html Заранее спасибо! Это сообщение отредактировал(а) Феликс - 6.7.2007, 08:54 |
|||
|
||||
| witex |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 224 Регистрация: 16.10.2006 Где: Эстония Репутация: 1 Всего: 4 |
Да по этой теме, совет. Заведи какуюнить глобальную переменную буул. И допусти если она true. То цикл обрывается. Это лудше будет для программы. При загрытии проги переменную меняешь, и сразу цикл тогда закроется!
а в цикле споставь if на неё, и если true выполнишь break; --------------------
Я не волшебник, я только учусь."Шлёпни в Гугл" - Афтор Былов Ю.М. |
|||
|
||||
| Феликс |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 28.11.2006 Репутация: нет Всего: -3 |
Спасибо за совет. Сделал так: Создал глобальную переменую типа BOOL. В цыкле ставлю проверку while(StatusFlag == TRUE) { ... }, а призакрытии StatusFlag = FALSE; Правельно? |
|||
|
||||
| witex |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 224 Регистрация: 16.10.2006 Где: Эстония Репутация: 1 Всего: 4 |
Совершенно верно
--------------------
Я не волшебник, я только учусь."Шлёпни в Гугл" - Афтор Былов Ю.М. |
|||
|
||||
| witex |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 224 Регистрация: 16.10.2006 Где: Эстония Репутация: 1 Всего: 4 |
Феликс, раз всё решили проблему, закрывай тему!
--------------------
Я не волшебник, я только учусь."Шлёпни в Гугл" - Афтор Былов Ю.М. |
|||
|
||||
| Феликс |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 28.11.2006 Репутация: нет Всего: -3 |
Эмммм... а как это мне сделать. Вроде нигде не видел кнопки по закрытию темы. |
|||
|
||||
| ptr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 661 Регистрация: 31.5.2006 Где: Новосибирск Репутация: 9 Всего: 14 |
Доступ к ней надо бы синхронизовать. Это сообщение отредактировал(а) ptr - 6.7.2007, 15:19 -------------------- Единственный способ определить границы возможного - это выйти за эти границы, в невозможное. Артур Кларк. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |