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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2013, 21:44   #1
stenl1
Форумчанин
 
Аватар для stenl1
 
Регистрация: 26.06.2009
Сообщений: 354
По умолчанию Приложение зависает

При переходе на страницу в webbrowser . webbrowser.Nawigate("http://") .Все окно программы зависает пока страница полностью не загрузится. Что можно сделать?
stenl1 вне форума Ответить с цитированием
Старый 21.01.2013, 22:22   #2
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

1) Изменить сайт, увеличив этим скорость загрузки (если это возможно)
2) Использовать другой движок для просмотра интернет страниц
3) Поискать в описании методов. Возможно есть метод, который прерывает загрузку.
Как я понимаю, "зависание" происходит из-за того, что выполняется в текущем потоке, в котором выполняется и интерфейс.
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Старый 22.01.2013, 00:39   #3
stenl1
Форумчанин
 
Аватар для stenl1
 
Регистрация: 26.06.2009
Сообщений: 354
По умолчанию

Цитата:
1) Изменить сайт, увеличив этим скорость загрузки (если это возможно)
Сайт менять нельзя - должна быть определенная страница(да и это не решение проблемы)
Цитата:
2) Использовать другой движок для просмотра интернет страниц
Как выриант , но это не удобно очень сложно искать под них документацию .Да и методы которые написаны по webbrowser придется переделывать.
Цитата:
3) Поискать в описании методов. Возможно есть метод, который прерывает загрузку.
Как я понимаю, "зависание" происходит из-за того, что выполняется в текущем потоке, в котором выполняется и интерфейс.
Хотел поставить в отдельный поток , но обработчик webbrowser_documentComplite - этого не позволяет сделать.
Если вы знаете как это реализовать - буду очень признателен если наберете не большой примерчик кода.
Что еще можно предпринять ?

Последний раз редактировалось stenl1; 22.01.2013 в 00:41.
stenl1 вне форума Ответить с цитированием
Старый 22.01.2013, 00:49   #4
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Запускать работу браузера в фоновом потоке BackgroundWorker
Если необходимо обращаться к элементам формы во время потока, делается это следующим образом.

Код:
Элемент.Dispatcher.BeginInvoke(new Action(() =>
 {
   //Здесь обращение к элементу
 }));
coNsept вне форума Ответить с цитированием
Старый 22.01.2013, 00:56   #5
stenl1
Форумчанин
 
Аватар для stenl1
 
Регистрация: 26.06.2009
Сообщений: 354
По умолчанию

Как запустить работу
Код:
WebBrowser.DocumentCompleted
в фоновом потоке можно поподробней плз. Я пробовал у меня даже не компилируется код.
Допустим по нажатию кнопки переходим на страницу
Код:
wb.Navigate("http://goggle.ru");
, а дальше весь код уже будет обрабатываться в событии WebBrowser.DocumentCompleted КАк его запихать в фоновый поток .Продемонтрируй плз. , а то не очень ясно что к чему.
stenl1 вне форума Ответить с цитированием
Старый 22.01.2013, 01:27   #6
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Инициализация фонового потока
Код:
BackgroundWorker bw = new BackgroundWorker();
bw.DoWork += new DoWorkEventHandler(bw_DoWork);
bw.RunWorkerAsync();
Код:
void bw_DoWork(object sender, DoWorkEventArgs e)
{
 this.Dispatcher.BeginInvoke(new Action(() =>
  {
    MyWeb.Navigate("http://programmersforum.ru");
  }), DispatcherPriority.Background);

 //Может здесь какие-то длительные вычисления

 this.Dispatcher.BeginInvoke(new Action(() =>
  {
    MyWeb.Navigate("http://programmersforum.ru/переход на другую страницу");
  }), DispatcherPriority.Background);
}
coNsept вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Приложение зависает при обращении к IdHTTP1.Get sasha_gavrithing Работа с сетью в Delphi 2 22.08.2012 15:14
Зависает приложение Slow267 Win Api 2 02.05.2011 13:36
зависает мышь gsg Компьютерное железо 1 16.11.2010 13:30
Задача:в вижуал с++ Разработать приложение-сервер и приложение (смотри дальше сообщение) Мила777 Фриланс 2 21.10.2009 11:05
При создании нескольких экземпляров класса приложение зависает Mixasik Общие вопросы C/C++ 1 25.04.2009 13:25