Gå til innhold

WebBrowser1.IsBusy + DoEvents? i .NET :S ?


Anbefalte innlegg

Hei hei, da starta jeg og med .NET etter ei kort stund med VB6, starta med en gang med en gang med WebBrowser funksjonen, men da møtte jeg på en feil :p

 

Vel, feil og feil, var ikke noen feil men det funka ikke slik jeg ønska ;) Får håpe dere kan svare på mitt lille spm da.

 

Koden skal gjøre slik at når sida loader, så venter den til den er ferdig

 

 

Eksempel kode (i VB6):

WebBrowser1.navigate "www.google.com"

DoEvents

While WebBrowser1.Busy = True

    DoEvents

Wend

 

hvordan fungerer denne koden i VB Express 2005 ?

 

prøvde noe slik i .NET, men det funka ikke:

        WebBrowser1.Navigate("www.nordicmafia.net")

        Application.DoEvents()

        While WebBrowser1.IsBusy = True

            Application.DoEvents()

        End While

 

for pro'sa her, så regner jeg med at dom ler av meg, men en n00b må jo starte en plass han og. ;)

Endret av Spenzer
Lenke til kommentar
Videoannonse
Annonse

Hvis Det er Sant at browser er opptatt

istedet for

Hvis browser er opptatt

 

det er litt smør på flesk, uten at det legger til noen ekstra logikk eller forståelse.

 

Det har ingen ting å si for ytelsen, men meg forteller det at programmereren ikke har helt forstått hverken bool eller if.

 

som i dette eksempelet

bool a, b, c, d, e, f;
a = b = c = d = e = f = true;

if(a == true && b == true && c == true && d == true && e == true && f == true)
 MessageBox.Show("TEH TRUTH!");

istedetfor

bool a, b, c, d, e, f;
a = b = c = d = e = f = true;

if(a && b && c && d && e && f)
 MessageBox.Show("TEH TRUTH!");

 

Begge gir samme resultat, men en er betydelig mindre kode en den andre.

Endret av GeirGrusom
Lenke til kommentar

Jeg vil påstå, uten at jeg klarer å komme med eksempel her nå, at det finnes tilfelle der det øker lesbarheten å sjekke om en boolean er true eller ikke..

 

Tross alt leser man koden oftere enn man skriver den..

Endret av don_Vito
Lenke til kommentar
Jeg vil påstå, uten at jeg klarer å komme med eksempel her nå, at det finnes tilfelle der det øker lesbarheten å sjekke om en boolean er true eller ikke..

 

Tross alt leser man koden oftere enn man skriver den..

9382577[/snapback]

 

Her noen eksempler:

 

1. Hvis prinsippet er at programmer skal være mest mulig selvdokumenterende, da kan det være greit å angi så som: if x = true then .....

 

2. Hvis programmet er stort og med veldig mange variabler, da er det ikke så lett å huske alle variablers deklarasjoner til en hver tid. Da ser man jo øyeblikkelig med: if x = true then ... at x er ment som en boolean variabel, noe man ikke gjør med if x then ..., fordi x kan jo være deklarert som f.eks.: dim x as single

 

3. Med if x = true then ... blir det mindre forståelsesproblemer for leseren som er nybegynner som ikke vet at med x som boolean da er i vb: if x then ... det samme som: if x = true then ....

 

4. Generelt er det en god programmeringsregel alltid å angi eksplisitt hvilke verdier man tester mot, så selv om derfor: if x = true then ... er smør på flesk når x er en boolean, så blir ikke flesket dårligere av den grunn, tvert om (flesket forstått som god programmeringsskikk).

Lenke til kommentar

If er en funksjon som tar ett parameter: bool

Alle andre datatyper satt inn her (single f.eks.) vil gi compile feil.

 

når vi nevner selvdokumenterende så er x et dårlig variabelnavn på selvdokumenterende kode. Pluss at det at det ikke er noen sammenligning her undestreker at dette er en boolean like fint som x == true. Hvorfor? hvis x ikke er en boolean, vil ikke programmet latt seg kompilere.

 

if(alive)

 

er ikke noe mindre selvdokumenterende en if(alive == true), faktisk synes jeg den er mer logisk, pluss at den tar mindre plass.

 

.NET er optimizings compiler, dvs at den fjerner i dette tilfellet alive == true

oversatt kode vil bli if(alive) selvom du skriver if(alive == true) fordi det er en teknisk forskjell her, selvom compileren gjør at det forsvinner.

 

Men kort sagt så ville if(alive == true) gjørt at alive ble sammenlignet to ganger hvis det ikke var en optimizing compiler.

Lenke til kommentar

Jeg er enig med alle sammen jeg.

 

Det jeg ikke liker er:

if(!noegreier)

 

Det utropstegnet forran variablen der er veldig lett å overse når man leser koden og debugger. Det er mye mer lesbart å skrive:

 

if( noegreier == false )

 

Men, alle regler er til for å brytes. Eksempelet til Geir med mange sjekker i if setningen

if( !a && !b && !c && !d && !e ... ) ville selvfølgelig ikke være hensiktsmessig å skrive på måten jeg nevnte over. Da kan det være greiere å putte det utenfor if setningen også:

bool tmp = (a || b || c || d) == false;

if( tmp )

 

 

Uansett så kan det være greit å tenke over hva man skriver.

Lenke til kommentar
If er en funksjon som tar ett parameter: bool

Alle andre datatyper satt inn her (single f.eks.) vil gi compile feil.

Åh... det var nytt, men feil på vb2005. Prøv f.eks. denne på vb2005:

 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim x As Single

If x Then

MsgBox("Sann: " & x)

Else

MsgBox("Usann: " & x)

End If

End Sub

 

Resultat: msgbox'en under else blir aktiv og gir verdien 0 for x! (x blir automatisk intialisert med 0)

 

Eller prøv denne:

 

Dim x As Single

x = 20

If x Then

MsgBox("Sann: " & x)

Else

MsgBox("Usann: " & x)

End If

 

Resultat: msgbox'en under then blir aktiv og gir verdien 20 for x.

 

Eller prøv denne:

 

Dim x As Single

x = 20

If x = True Then

MsgBox("Sann: " & x)

Else

MsgBox("Usann: " & x)

End If

 

Resultat: msgbox'en under else blir aktiv og gir verdien 20 for x.

 

 

når vi nevner selvdokumenterende så er x et dårlig variabelnavn på selvdokumenterende kode.

Jojo, men det er jo ikke variabelnavn som diskuteres her.

 

Pluss at det at det ikke er noen sammenligning her undestreker at dette er en boolean like fint som x == true. Hvorfor? hvis x ikke er en boolean, vil ikke programmet latt seg kompilere.

Eksemplene ovenfor viser at i vb2005 tar if ikke bare boolean variabler!

 

if(alive) er ikke noe mindre selvdokumenterende en if(alive == true), faktisk synes jeg den er mer logisk, pluss at den tar mindre plass.

Smak og behag formoder jeg, men når i vb2005 if tar f.eks. både boolean og single variabler, da er nok i vb2005 if x = true then ... mer selvdokumenterende enn if x then ... hvis man er usikker på x sin deklarasjon, fordi x = true indikerer at x er ment som boolean.

Lenke til kommentar
Åh... det var nytt, men feil på vb2005. Prøv f.eks. denne på vb2005:

9383541[/snapback]

 

Sett OPTION STRICT og prøv igjen. VB er veldig "flink" til å la deg få lov til å skrive dårlig kode....

9383640[/snapback]

Jojo, men vb tillater altså at if tar ikke bare boolean. Det var jo det som var diskusjonen! Så kan jo du komme med innskrenkninger ..., men da blir det som å diskutere mot bevegelige mål, en håpløs diskusjon vil nå jeg si da.

Lenke til kommentar
Åh... det var nytt, men feil på vb2005. Prøv f.eks. denne på vb2005:

9383541[/snapback]

 

Sett OPTION STRICT og prøv igjen. VB er veldig "flink" til å la deg få lov til å skrive dårlig kode....

9383640[/snapback]

 

 

 

Hehe, det vet jeg ett og annet om :innocent:

 

 

Skulle sett hvor mye compileren maste og gnøvla når jeg migrerte fra VB.NET til C# :w00t::whistle:

 

 

Når jeg først er off-topic, vil jeg si noe til GeirGrusom (aka. HenningGrusom :p)

 

Selv om jeg foretrekker å sette == true eller false, når jeg sjekker booleanske verdier (unntaket må være i php. Der gir jeg F, og bare koder :p), har jeg da forstått både boolean og if. Tror jeg da :tease:

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...