Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2012, 19:18   #1
Tolias
Пользователь
 
Регистрация: 18.08.2010
Сообщений: 41
Печаль При загрузке страницы из сервера программа иногда очень долго пытается ее получить

Получаю страницу с сервера вот так:
PHP код:
                    WebResponse response;
                    
Stream receiveStream;
                    
StreamReader readStream;
                    
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(stringFaveUrl);
                    
request.UserAgent stringUserAgent;
                    
request.Timeout timeout 1000;
                    
request.CookieContainer userData.cookie;
                    
//swlog.WriteLine(DateTime.Now + ": request.GetResponse()"); swlog.Flush();
                    
response request.GetResponse();
                    
receiveStream response.GetResponseStream();
                    
readStream = new StreamReader(receiveStreamEncoding.Default);
                    
content readStream.ReadToEnd(); 
Все нормально пашет. Но вот только иногда программа очень долго(до 5 минут доходило) выполняет эту строку:
PHP код:
content readStream.ReadToEnd(); 
после чего падает в Exception. Я так понял, иногда программа не может получить ответ от сервера и продолжает ждать. Это исключение я отлавливаю. Но вот как можно ограничить это ожидание например до 15 секунд? чтобы оно не длилось несколько минут...
для request я таймаут в 15 секунд выставил, но программа по прежнему иногда зависает на несколько минут на строке получения контента. Как решить проблему?
Tolias вне форума Ответить с цитированием
Старый 27.02.2012, 00:19   #2
KobolD
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 239
По умолчанию

Попробуй запускать эту команду в другом потоке, а в основном делай таймер, который будет ждать твои 15 сек. и принудительно убивать второй поток, и возвращать ошибку, ну или нулевой результат.
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
KobolD вне форума Ответить с цитированием
Старый 27.02.2012, 00:26   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а можно инфу по Exception этому?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.02.2012, 00:58   #4
Tolias
Пользователь
 
Регистрация: 18.08.2010
Сообщений: 41
По умолчанию

Цитата:
Сообщение от KobolD Посмотреть сообщение
Попробуй запускать эту команду в другом потоке, а в основном делай таймер, который будет ждать твои 15 сек. и принудительно убивать второй поток, и возвращать ошибку, ну или нулевой результат.
Я уже так и думал сделать в отчаянии... Но это ж не оптимально. Делать еще один поток ради вот такого Думаю, может существует более красивое решение...

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
а можно инфу по Exception этому?
System.IO.IOException was caught
Message=Unable to read data from the transport connection: The connection was closed.
Source=System
StackTrace:
at System.Net.ConnectStream.Read(Byte[] buffer, Int32 offset, Int32 size)
at System.IO.StreamReader.ReadBuffer()
at System.IO.StreamReader.ReadToEnd()
at VkBookmarks.MainWindow.Reload(Objec t showErrorsAuto) in F:\MyProgs\OnlineNotice\OnlineNotic e\MainWindow_Handling.cs:line 408
InnerException:
Tolias вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Окно, появляющиеся при загрузке веб страницы Lawilet JavaScript, Ajax 4 12.10.2011 12:57
Подмена exel файла при загрузке со страницы Алексей131 JavaScript, Ajax 3 27.06.2010 14:20
скрипт при загрузке страницы xap4o JavaScript, Ajax 2 16.02.2010 23:33
ПРограмма подвисате при загрузке большого файла.. cowboy Общие вопросы .NET 15 05.10.2009 13:28
Выезжающее меню при загрузке страницы beginner JavaScript, Ajax 12 03.07.2008 16:45