|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.03.2016, 09:26 | #1 |
Регистрация: 13.03.2016
Сообщений: 9
|
Сетевое асинхронное приложение. C#
Сервер зависает вот на этой строке:
Код:
Код:
Последний раз редактировалось I_Enjoy_C#; 13.03.2016 в 09:29. |
13.03.2016, 12:29 | #2 |
Регистрация: 13.03.2016
Сообщений: 9
|
На коленке набросал консольный синхронный листенер в несколько строк. Он все принимает отлично. Значит клиент данные точно выслал, а вот асинхронный тупит
Последний раз редактировалось I_Enjoy_C#; 13.03.2016 в 12:41. |
13.03.2016, 12:45 | #3 |
Регистрация: 13.03.2016
Сообщений: 9
|
Я вообще недавно только разобрался со всей этой асинхронностью и мог напортачить конкретно с ней. У меня подозрение что что то там не так... Вот еще код десериализатора. Используется XmlSerializer (данные в xml передаю) и NetworkStream.
Код:
|
13.03.2016, 12:53 | #4 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Ну как минимум надо использовать Task.Factory.StartNew или Task.Run вместо просто new.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
13.03.2016, 12:58 | #5 |
Регистрация: 13.03.2016
Сообщений: 9
|
|
13.03.2016, 13:04 | #6 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Как это нет? Все есть, что именно вам от конструктора надо?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
13.03.2016, 13:25 | #7 |
Регистрация: 13.03.2016
Сообщений: 9
|
А да, действительно есть, почему то раньше их не замечал. Но все равно не помогло что то... Не доходят сообщения
|
13.03.2016, 13:28 | #8 |
Регистрация: 13.03.2016
Сообщений: 9
|
Точнее даже так: сообщение приходит только когда клиент дисконнектится, совершенно случайно заметил.
|
13.03.2016, 15:38 | #9 |
Регистрация: 13.03.2016
Сообщений: 9
|
Дальше еще интереснее!!! Все в тот же написанный на коленке синхронный листенер я добавил все эти ChatMessage и ClientView и попробовал запустить все (в том числе и десериализацию) синхронно. Так вот абсолютно та же фигня - все повисает на десериализации XmlSerializer-ом сообщения из NetworkStream. Почему так происходит? Причем если я просто из этого потока считываю буфер как байты, потом перекидываю в MemoryStream и уже из него десериализовываю - то все работает нормально. А вот из NetworkStream-а хоть убей не хочет десериализовывать. При том сериализовывает в него (на стороне клиента) он нормально...
Хотя самым интересным по прежнему остается вот это! Последний раз редактировалось I_Enjoy_C#; 13.03.2016 в 15:41. |
13.03.2016, 15:45 | #10 |
Регистрация: 13.03.2016
Сообщений: 9
|
У меня есть единственное подозрение. Когда я работал с StreamWriter, то чтобы нормально работало надо было у него AutoFlush в true устанавливать чтобы он сбрасывал данные сразу же. Может ли тут быть та же фигня? У NetworkStream нет свойства AutoFlush, но есть метод Flush. Причем не ясно делает ли он что то, т.к. в комментах студии написано "Этот метод зарезервирован для использования в будущем.". Да и вроде попробовал его вызывать, ничего не дает...
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Большой проект (чтение com, БД, картография) - сетевое приложение для windows | tarakan1983 | Фриланс | 25 | 14.01.2015 20:34 |
Сетевое приложение (Клиент-сервер) | Unique | Работа с сетью в Delphi | 9 | 10.05.2012 22:01 |
сетевое приложение на J2ME | TitanicMan | Общие вопросы по Java, Java SE, Kotlin | 1 | 08.01.2010 03:33 |
Сетевое приложение для удаленного запуска программ. | Ветас | Работа с сетью в Delphi | 2 | 11.11.2007 09:19 |