В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
1 | ||||||
.NET 4.x TcpClient15.11.2011, 13:01. Показов 1956. Ответов 6
Метки нет (Все метки)
Захотелось написать клиента, просто ради интереса.
По идее при OnTimer должен лететь Exception. Но нет. Не летит. В чем мб проблема? Где он съедается? Спасибо.
1
|
15.11.2011, 13:01 | |
Ответы с готовыми решениями:
6
TcpCLient TcpClient Класс TcpClient TcpClient и TcpListener |
17791 / 12942 / 3381
Регистрация: 17.09.2011
Сообщений: 21,219
|
|
15.11.2011, 13:39 | 2 |
Метод OnTimer выполняется в отдельном потоке. Исключение летит и просто схлопывает поток, так как не ловится.
1
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
15.11.2011, 14:00 [ТС] | 3 |
kolorotur, Не могу понять как это поправить. Ведь поток создается независимо от меня => вижу только вариант использовать нечто другое или не кидаться исключениями, но по логике вещей, тут должно быть именно исключение. Впринципе можно устанавливать некий флажок и проверять, но тоже не айс. Какой вариант предложили бы вы?
0
|
17791 / 12942 / 3381
Регистрация: 17.09.2011
Сообщений: 21,219
|
|
15.11.2011, 14:13 | 4 |
Вы реализуете асинхронное соединение, следовательно все ошибки при соединении обрабатываются тоже асинхронно.
Пишите код обрабатывания зафейлившего соединения в обработчике таймера или запускайте свое событие типа ConnectFailed, на которое подпишутся заинтересованные объекты.
1
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
15.11.2011, 14:53 [ТС] | 5 |
kolorotur, Видимо я чего-то не понимаю. Событие написал. В таймере собственно должны бы его рейзануть получается, в итоге событие рейзится не в главном потоке, переходит в обработчик - эксепшн летит и поток мрет. Что я неверно сделал?
0
|
17791 / 12942 / 3381
Регистрация: 17.09.2011
Сообщений: 21,219
|
|
15.11.2011, 15:06 | 6 |
Выбросили исключение в потоке. Зачем?
Если таймер тикнул, значит сокет за установленное ему время не успел соединиться. Закрываем сокет и вызываем событие что соединение зафейлилось. Заинтересованные объекты это событие обрабатывают и выдают сообщение пользователю/закрывают приложение/форматируют диск/жарят карри. Зачем здесь выбросы исключений?
1
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
15.11.2011, 15:07 [ТС] | 7 |
kolorotur, Да, согласен. Спасибо!
0
|
15.11.2011, 15:07 | |
15.11.2011, 15:07 | |
Помогаю со студенческими работами здесь
7
TcpClient и TcpServer TcpClient проверка соединения Отключение TcpClient от сервера TcpClient для отправки на разные IP Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |