Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];

Вниз

Indy10 WriteFile и синхронизация   Найти похожие ветки 

 
BanderLog   (2006-06-01 07:24) [0]

Привет мастерам!
Пытаюсь написать простенькую прогу по передаче фалов по TCP.
Использую TIdTCPServer и TIdTCPClient. Возникла проблема синхронизации с основным потоком (для отображения процесса передачи файла и ведения лога).
При налиции в исходном коде на клиентской стороне функции WriteFile, при попытки синхронизации приложение просто "уходит в себя". Если закоментировать её, то код отрабатывает нормально. Если раскоментировать, то "уходит в себя" при первом попытке синхронизации (...Synchronize( AddToLog)). за долго до того пока дело дойдет до самой WriteFile.
В чем может быть дело?

В том же самом коде если убрать все выводы в лог, оставив WriteFile, код отрабатывает нормально.


 
Сергей М. ©   (2006-06-01 12:15) [1]


> BanderLog   (01.06.06 07:24)


Отладчик на что существует, как думаешь ?


 
BanderLog   (2006-06-01 12:16) [2]

Проблема почти разрешилась. Одновременная работа (в одной программе) сервера и клиента вызывает данный эффект. При запуске двух копий программы и использовании одной в качестве сервера, а другой как клиент, все работает прекрасно. :(
Вот такие пироги.


 
BanderLog   (2006-06-01 12:18) [3]


> Отладчик на что существует, как думаешь ?

А я сказал на каком этапе подвисает. На вызове метода Synchronize.


 
Сергей М. ©   (2006-06-01 12:24) [4]


> данный эффект


"данный эффект" - это просто ошибки в программе.


> я сказал на каком этапе подвисает. На вызове метода Synchronize


Synchronize() - не атомарная операция.
Следует четко представлять, что происходит в ее "потрохах".
На то как раз есть отладчик и исх.текст класса TThread


 
BanderLog   (2006-06-01 12:28) [5]

во время отладки доходит только до Synchronize и подвисает.


 
BanderLog   (2006-06-01 12:33) [6]

к тому же в дааном случае используются его наследки от Indy 10, исходников которых у меня нет нет.


 
umbra ©   (2006-06-01 12:39) [7]


> исходников которых у меня нет

как нет? инди есть, а исходников нет?


 
BanderLog   (2006-06-01 12:52) [8]

Да действительно, нашёл исходники, но как заствить при отладке дебагер заходить и в них?


 
Сергей М. ©   (2006-06-01 13:07) [9]


> BanderLog   (01.06.06 12:52) [8]


Тебе и заходить туда не надо - достаточно поставить брпейкпойнт в начало тела метода AddToLog()


 
BanderLog   (2006-06-01 13:16) [10]

:))))) Увы не доходит он до этой процедуры, зависает где то в недрах Synchronize. Причем Делфи 2005 показывает что запускается и потом закрывается процесс какой-то, но увы приложение висит.


 
Сергей М. ©   (2006-06-01 13:24) [11]


> BanderLog   (01.06.06 13:16) [10]


> не доходит он до этой процедуры


Значит основной поток твоего приложения в это время чем-то занят и не реагирует на Win-сообщения.

Это и есть та самая ошибка.


 
BanderLog   (2006-06-01 13:24) [12]

Ага, осталось узнать чем, и как на это влияет процедура WriteFile.


 
Сергей М. ©   (2006-06-01 13:28) [13]


> осталось узнать чем


Это (за полным отсутствием кода) - к телепатам.


> как на это влияет процедура WriteFile


Никак.



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.045 c
2-1160338383
XeRoN
2006-10-09 00:13
2006.10.29
Работа с чужим приложением


10-1124891616
Spose
2005-08-24 17:53
2006.10.29
Определить активный элемент в TWebbrowser


4-1150366417
kliman
2006-06-15 14:13
2006.10.29
Перехват комбинации клавиш


2-1159904838
mr1Andersen
2006-10-03 23:47
2006.10.29
Как сделать так что бы программа сделанная на делфи, работала вес


15-1160049524
kroner
2006-10-05 15:58
2006.10.29
HTML-редактор





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский