2014-01-24 2 views
5

Как предотвратить зависание GUI, когда веб-браузер перемещается и загружает страницу?Почему графический интерфейс зависает, когда браузер перемещается и загружается?

webBrowser1.Navigate("http://www.costco.com/"); 

Например, когда он перемещается к этому сайту, моя программа слегка замерзает, особенно когда загружается веб-страница. Я не мог перетащить и переместить форму. Нельзя щелкнуть кнопками вкладки в элементе управления вкладкой. Мне нужно дождаться, когда веб-страница полностью загрузится, чтобы он разморозился.

Я заметил, что автономный браузер Internet Explorer не ведет себя так. Он не замерзает при загрузке веб-страницы.

Как я могу предотвратить зависание пользовательского интерфейса при загрузке веб-страницы?

+0

Когда вы звоните 'Navigate', в какой момент в коде? – DonBoitnott

+0

под кнопкой1_click – user3231203

+0

Вы пытались использовать 'async/await'? – rhughes

ответ

0

Согласно моему опыту, метод навигации является неблокирующей функцией, и он не будет Freez UI.

одна из возможных причин является то, что вы называете его до инициализации UI ... Вы должны вызвать эту функцию после загрузки формы:

bool form_loaded=false; 

private void Navigate(String url) 
{ 
if(form_laded) 
    webBrowser1.Navigate(url); 
} 

private void Form1_Load(object sender, EventArgs e) 
{ 
     form_loaded = true 
} 
. 
. 
. 
void boo() 
{ 
    Navigate ("http://stackoverflow.com"); 
} 

`

Если вы хотите, чтобы убедиться, что пользовательский интерфейс не замораживания во время навигации вы можете вызвать DoEvents в каждом OnProgressChanged события:

private void webBrowser1_OnProgressChanged(WebBrowserProgressChangedEventArgs e) 
{ 
    Application.DoEvents(); //update ui 
} 
+0

Благодарим вас за ответ, но он не работает. Я проверил ваш код, добавив еще один элемент управления вкладкой с двумя закладками. Когда boo() запускается, я быстро нажимал кнопки tabpage1 и tab2 несколько раз, и их нельзя щелкнуть в течение 1 - 2 секунд, потому что графический интерфейс немного замерзает во время навигации при загрузке веб-страницы. – user3231203

+0

Я думаю, что проблема связана с веб-страницей, которую вы загружаете. Загружает ли он какой-либо плагин, например, java или flash-плеер? (Они могут вызвать такие проблемы) – Pooya

Смежные вопросы