Променливите в локалния обхват се унищожават (освободена памет) при изпълнение на функция (край).

person Hui    schedule 12.06.2011    source източник
comment
Статичните методи всъщност могат да върнат стойност. Това са нишки, които не могат. Освен това нишките могат да използват нестатичен метод.   -  person icktoofay    schedule 13.06.2011


Отговори (1)


Правилна идея, грешно изпълнение. WebBrowser.Navigate() само казва на уеб браузъра да започне да навигира до уеб страницата, която сте поискали. Това отнема време, обикновено стотици милисекунди. Internet Explorer вътрешно стартира нишки, за да свърши работата. Той ви казва кога е готово чрез повдигане на събитието DocumentCompleted. Вие не чакате това, така че първо е градът на катастрофата.

Следващият проблем е, че събитието DocumentCompleted няма да бъде повдигнато във вашия код. Трябва да спазвате STA договора, той изисква да изпомпвате цикъл на съобщения. Това е най-могъщият начин, по който фонова нишка, като тази, която IE използва за извличане на уеб страница, казва на вашата нишка, че работата е свършена.

Шаблонният код, от който се нуждаете, е наличен в този отговор .

person Hans Passant    schedule 12.06.2011
comment
Как бихте се занимавали с верижни дейности? Искате да навигирате до някоя страница, след това въведете текст в текстово поле и щракнете върху търсене или отидете. Трябва ли просто да направите обекта WebBrowser глобален и след това да свържете заедно 4 метода, навигация, навигиране на документа е завършен, въведете текст и натиснете go, събитие за завършен документ на entertextandhitgo? - person NathanTempelman; 21.03.2013
comment
Една държавна машина е простото решение за проблеми с асинхронното програмиране. Просто следете състоянието с цяло число или enum. - person Hans Passant; 21.03.2013
comment
Само странична бележка: когато се опитвате да автоматизирате контрола на WebBrowser без взаимодействие с потребителя, ще се натъкнете на сериозни проблеми с изскачащи диалогови прозорци, освен ако не зададете webBrowser.ScriptErrorsSuppressed = true (което, въпреки името си, потиска всички диалогови прозорци, а не само грешки в скрипта ). Вижте също. - person BlueRaja - Danny Pflughoeft; 16.12.2013