Страница: 1 | 2 | 3 |
Вопрос: Как сделать ожидание подключения интернет соед.?
Добавлено: 16.07.10 10:31
Автор вопроса: Michael Melchakov | ICQ: 302272185
То есть, мне необходимо скачать файл после подключения инета. Как проверить инет - использую такую вещь
Dim currentversion, lastversion As String
Try
lastversion = client.DownloadString("http://xxx.ru/about.txt")
Catch ex As Exception
client.Dispose()
MsgBox("Не удалось связаться с сервером.")
Exit Sub
End Try
client.Dispose()
Но это единичный случай проверки. Если зациклить данную вещь, то программа просто напросто зависает, до подключения. Если ставить на паузу между данными запросами -
то тоже зависание программы (хотя уже проц не используется).
Как можно сделать так, чтобы производилась проверка доступности файла (или соединения инет по http), но без подвисания программы?
Или как вариант - производилась проверка, например каждые 2 минуты...?
Ответы
Всего ответов: 32
Номер ответа: 1
Автор ответа:
Сергей
ICQ: 558230345
Вопросов: 7
Ответов: 91
Профиль | | #1
Добавлено: 16.07.10 11:55
http://msdn.microsoft.com/ru-ru/library/system.net.webclient.aspx?ppud=4
в конце есть неплохой пример
Номер ответа: 2
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #2
Добавлено: 16.07.10 12:08
Я что-то слышал о таймерах...
Номер ответа: 3
Автор ответа:
Сергей
ICQ: 558230345
Вопросов: 7
Ответов: 91
Профиль | | #3
Добавлено: 16.07.10 15:10
Executioner
по таймеру можно сделать обращение, но все равно не угадаешь окончание запроса. А ечли использовать Stream, то выполнение идет синхронно и обработка потока начнется только после аго полного получения. а по таймеру можно поставить обработку максимального времени запроса и его превышение с выдачей ошибки.
Номер ответа: 4
Автор ответа:
AgentFire
ICQ: 192496851
Вопросов: 75
Ответов: 3178
Профиль | | #4
Добавлено: 16.07.10 15:33
делай или My.Computer.Network.Ping и\или выводи во второй поток
Номер ответа: 5
Автор ответа:
Michael Melchakov
ICQ: 302272185
Вопросов: 12
Ответов: 31
Профиль | | #5
Добавлено: 16.07.10 17:01
Сергей, спасибо за ответ, но для меня это было сложновато...
Сделал через таймер - проверку соединения (поставил проверку раз в секунду... проц вроде не грузит, память почти не кушает...
Если надо могу выложить пример..?
Номер ответа: 6
Автор ответа:
Michael Melchakov
ICQ: 302272185
Вопросов: 12
Ответов: 31
Профиль | | #6
Добавлено: 16.07.10 17:02
Спасибо большое за подсказки
Номер ответа: 7
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #7
Добавлено: 16.07.10 17:07
Чтоб делать проверку без подвисания, ее нужно запускать в отдельном потоке, или как асинхронную IO операцию, или в ThreadPool (через Delegate.BeginInvoke)
Номер ответа: 8
Автор ответа:
Coloss
ICQ: 479007356
Вопросов: 15
Ответов: 37
Профиль | | #8
Добавлено: 16.07.10 23:18
конечно выкладывай!
Номер ответа: 9
Автор ответа:
Michael Melchakov
ICQ: 302272185
Вопросов: 12
Ответов: 31
Профиль | | #9
Добавлено: 17.07.10 08:10
Сделано у меня так.
На форме добавлен элемент таймер с параметром Interval=1000
в этом случае идет следующее, каждую секунду идет проверка интернета (в том числе не возникает ошибок при блокировке фаероом, или отключенной сети и т.п.). Если проверка проходит успешно, то выполняется скачка файла и таймер останавливается, т.е. больше проверок не идет.
Вроде так. Подвинсаний проги не заметил, память кушается в моей програмке на 23 метра но в нынешних условиях это вроде не много
Ваши замечания?
Номер ответа: 10
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #10
Добавлено: 17.07.10 11:24
Таймер из Windows Froms срабатывает в UI потоке, поэтому пока идет загрузка, окно не будет реагировать на действия, будет зависшим.
Номер ответа: 11
Автор ответа:
Michael Melchakov
ICQ: 302272185
Вопросов: 12
Ответов: 31
Профиль | | #11
Добавлено: 17.07.10 12:04
так то да но это уже можно и потом подредактировать. Но что кассается моего случая, файлик загружаемый - очень маленький, загрузится быстро...
Номер ответа: 12
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #12
Добавлено: 17.07.10 14:29
Если инет работает, а если нет то будет висеть пока не выкинет таймаут
Номер ответа: 13
Автор ответа:
Michael Melchakov
ICQ: 302272185
Вопросов: 12
Ответов: 31
Профиль | | #13
Добавлено: 17.07.10 16:38
а вот тут ты не прав.. не висит опробовано
Номер ответа: 14
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #14
Добавлено: 17.07.10 20:05
Оно не может не висеть.. это ты не прав, потому что как уже было сказано джедаем Artyom
И вот с этим не поспоришь.. А чтоб бы ты уверовал в его правоту просто отключи инет и запусти свой код.. и ты увидишь как твоя софтина висит.. ибо ты не ведаешь что творишь юный падован..
Номер ответа: 15
Автор ответа:
Michael Melchakov
ICQ: 302272185
Вопросов: 12
Ответов: 31
Профиль | | #15
Добавлено: 17.07.10 21:32
я тоже не спроста пишу... уже код написан, прога работает.
Отключил инет, запустил программу - сразу начинает работать проверка инета (не скачка файла а именно проверка).
Форму можно перетаскивать, работают кнопки... Или я не правильно понимаю ваши слова - "висеть" либо что то где то тут не так
Давайте потом переделаю то что у меня прога скачивает... выложу прогу и код?