Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
179 / 180 / 54
Регистрация: 01.06.2011
Сообщений: 507
1

Зависает программа при отсутствии интернет подключения

23.01.2012, 14:19. Показов 1594. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Программа переходит в режим "не отвечает" если отсутствует подключение к интернет. Конструкция try-catch не помогает. Как можно обезопасить себя от незапланированного вылета программы и предупредить пользователя "почему не работает?".
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.01.2012, 14:19
Ответы с готовыми решениями:

Программа автоматически парсит сайт и не отвечает при отсутствии интернет-соединения
Моя программа автоматически парсит сайт, но как только соединение с интернетом открывается...

Работа библиотеки Retrofit при отсутствии подключения к интернету
При стабильном подключении к интернету приложение работает нормально, как только убираю подключение...

Как прервать выполнение тестового метода при отсутствии соединения с Интернет
В проекте с юнит-тестами (VS 2010) есть метод, который тестирует некую функцию. Но чтобы ее...

Как отловить сообщение об отсутствии подключения к интернету?
Всем привет. Скачиваю файлы через поток и пользуюсь блоками try...except. Но вот хочу сообщение об...

8
Злой няш
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
23.01.2012, 14:24 2
Цитата Сообщение от ushim Посмотреть сообщение
Конструкция try-catch не помогает.
А как она написана?

Цитата Сообщение от ushim Посмотреть сообщение
Программа переходит в режим "не отвечает" если отсутствует подключение к интернет.
А что вообще делает программа? Пример кода?

Цитата Сообщение от ushim Посмотреть сообщение
Как можно обезопасить себя от незапланированного вылета программы и предупредить пользователя "почему не работает?".
C#
1
2
3
4
5
6
7
8
try
{
    // Проверяемый код
}
catch
{
    // Сообщение об ошибке
}
0
179 / 180 / 54
Регистрация: 01.06.2011
Сообщений: 507
23.01.2012, 14:38  [ТС] 3
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
try
            {
                string http = "http://cyberforum.ru";
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(http);
                WebResponse resp = req.GetResponse();
                Stream stream = resp.GetResponseStream();
                return new StreamReader(stream, Encoding.Default).ReadToEnd();
            }
            catch
            {
                taskBarItem.ProgressState = System.Windows.Shell.TaskbarItemProgressState.Error;
                return "Ex";
            }
Отключаем интернет - ловим "не отвечает"
0
Злой няш
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
23.01.2012, 14:42 4
ushim, отключил, запустил следующий код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System;
using System.Net;
using System.IO;
using System.Text;
 
class Program
{
    static void Main()
    {
        try
        {
            string http = "http://cyberforum.ru";
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(http);
            WebResponse resp = req.GetResponse();
            Stream stream = resp.GetResponseStream();
 
            Console.WriteLine(new StreamReader(stream, Encoding.Default).ReadToEnd());
        }
        catch
        {
            Console.WriteLine("Error");
            //taskBarItem.ProgressState = System.Windows.Shell.TaskbarItemProgressState.Error;
            //return "Ex";
        }
    }
}
Результат на экране: "Error".
0
179 / 180 / 54
Регистрация: 01.06.2011
Сообщений: 507
23.01.2012, 14:45  [ТС] 5
Вот и я о том же. Я знаю что данный код 99,99% работает, но видимо мой интернет или компьютер один такой глупый, что не может элементарно отследить подключение интернет. Примечательно что при отправке сообщения не электронку он ловит Exception.
0
Злой няш
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
23.01.2012, 14:47 6
ushim, может программа вообще не в этом месте виснет? (:
0
179 / 180 / 54
Регистрация: 01.06.2011
Сообщений: 507
23.01.2012, 14:55  [ТС] 7
скажу больше. виснет вот тут req.GetResponse(); 100%
0
Эксперт Java
4092 / 3826 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
23.01.2012, 15:05 8
как насчет запуска проверки в отдельном потоке?
0
Злой няш
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
23.01.2012, 15:06 9
ushim, вероятно он пытается сделать несколько попыток подключения.
Попробуй покрутить у него свойства ReadWriteTimeout и Timeout. Или запустить весь код в отдельном потоке, вывести сообщение пользователю "Подождите" и глянуть зависнет ли программа.

Или попробовать так получить содержимое страницы:
C#
1
var content = new WebClient { Encoding = Encoding.UTF8 }.DownloadString(http);
0
23.01.2012, 15:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.01.2012, 15:06
Помогаю со студенческими работами здесь

Загрузка данных на сервер при появлении подключения к интернет
Друзья. Есть php скрипт на локалхосте. Этот скрипт заполняет локальную базу какими то данными. И...

Сбой системы при создании интернет подключения в Windows 8
После установки Windows 8, пытался создать интернет подключение,но по завершении создания...

Windows 10 - проблемы подключения к Интернет при установке 1809
Windows 10 автоматически обновилась до 1809, после этого не работает ряд программ - проблемы с...

Настройка сетевого подключения по умолчанию в rashbian для подключения к сети интернет
Всем здравствуйте! На orange PI zero поднял ОС rashbian с необходимым ПО. Всё работает как надо. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru