Diskuze: Načítání HTML stránek ve smyčce

C# .NET .NET (C# a Visual Basic) Načítání HTML stránek ve smyčce American English version English version

Avatar
jenda
Člen
Avatar
jenda:

Poprosím o radu s následujícím: Mám jednoduchou smyčku, ve které načítám html stránku. Potíž je se zobrazením této stránky, protože se zobrazí až poslední stránka. Stránku bych chtěl zobrazovat ve formuláři ve webBrowseru1 (mohla by tam zůstat třeba 10 vteřin). Smyčka vypadá nějak takto:

var dokument = HtmlDocument.Load(zdroj);
var aTags = dokument.DocumentNode.SelectNodes("//a[@href]");
foreach (var aTag in aTags)
{
        cesta =  aTag.Attributes["href"].Value;
        webBrowser1.Navigate(cesta);
}

Chová se to tak, že proběhne nejprve celá smyčka a teprve poté se zobrazí stránka, namísto toho aby se stránka zobrazila při každém průchodu smyčkou. Poradíte prosím?

 
Odpovědět 13. dubna 17:59
Avatar
Odpovídá na jenda
sadlomaslox25:

no a proc tam nedas ten prikaz aby tam ta stranka zustala 10s ? pokud ho tam das tak te to nejspis navede k tomu ze stale neuvidis nic a navic aplikace bude strasne zamrzat. to te nasmeruje k tomu ze cekani se neda provadet na UI vlakne a resi se to bud pres casovac nebo pres druhe vlakno. casovace jsou vetsinou 2 jeden nesynchonizovany s UI a druhy synchronizovany a pro komunikaci mezi vlaknem a UI se pouzivaji synchronizace jako Invoke nebo Dispatcher. pokud budes studovat dal tak te to navede k .net 4.5 ktery pridal podporu pro jednoduchou manipulaci s vlakny a UI pomoci klicovych slow await a async. :)

 
Nahoru Odpovědět 13. dubna 20:53
Avatar
LacoS.
Člen
Avatar
Odpovídá na jenda
LacoS.:

Urob si jednoduchy casovac (10sec) a v nom si nacitavaj tu stranku;

Nebude Ti to fungovat, ak iba vytvoris cyklus (foreach) na citanie stranky
a na jeho konci dat pauzu 10sec;

 
Nahoru Odpovědět 13. dubna 23:25
Avatar
jenda
Člen
Avatar
Odpovídá na sadlomaslox25
jenda:

Tohle je na mě moc složité, tak daleko se myslím nikdy nedostanu :-(

Ale vyřešil jsem to přes timer, kdy si v timeru udělám jednoduchou smyčku s IF a počítadlem a načítáním stránky, v DocumentCompleted zastavím timer, vyřeším zpracování stránky a zase pustím timer.

 
Nahoru Odpovědět  +1 16. dubna 10:17
Avatar
00
Člen
Avatar
Odpovídá na jenda
00:

timer == časovač

 
Nahoru Odpovědět 4. května 14:38
Avatar
Posix
Člen
Avatar
Odpovídá na jenda
Posix:

Něco takového by nestačilo? Případně to celé dáš do while (true). Nevím, čeho přesně chceš docílit.

var dokument = HtmlDocument.Load(zdroj);
var aTags = dokument.DocumentNode.SelectNodes("//a[@href]");
foreach (var aTag in aTags)
{
        cesta =  aTag.Attributes["href"].Value;
        webBrowser1.Navigate(cesta);
        Thread.Sleep(10 * 1000);
}
Editováno 7. května 12:13
Nahoru Odpovědět 7. května 12:12
Proč to dělat jednoduše, když to jde složitě.
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na Posix
Jiří Gracík:

Nechceš si uspat hlavní vlákno na 10 vteřin :)

Nahoru Odpovědět 7. května 12:38
Creating websites is awesome till you see the result in another browser ...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.