Gå til innhold

Anbefalte innlegg

Skrevet

Kan noen si hvorfor denne ikke "fyrer"?

 

DateTime videre;
videre = DateTime.Now;
videre.AddSeconds(3);
while (videre > DateTime.Now)
{
     
}

 

Denne funker:

using System.Threading;
thread.sleep(3000);

 

men hvorfor funker ikke min egen lille metode?

Videoannonse
Annonse
Skrevet
Kan noen si hvorfor denne ikke "fyrer"?

 

DateTime videre;
videre = DateTime.Now;
videre.AddSeconds(3);
while (videre > DateTime.Now)
{
     
}

 

Denne funker:

using System.Threading;
thread.sleep(3000);

 

men hvorfor funker ikke min egen lille metode?

6839599[/snapback]

Tja, det kan hende at kompilatoren ser at du ikke gjør noe i while-løkka, slik at det er 'trygt' å fjerne den.

Sjekk binærfila di med reflector eller ildasm for å se om while-løkka i det hele tatt er der.

 

- grå -

Skrevet (endret)

videre = videre.AddSeconds(3);

 

:)

 

Eller:

 

DateTime videre = DateTime.Now.AddSeconds( 3 );

while( videre > DateTime.Now );

 

Eller bare:

for( DateTime tmp = DateTime.Now.AddSeconds( 3 ); tmp > DateTime.Now ; ) ;

 

Btw;

 

while(); ekke så veldig snillt med cpu'en din. Start task-manager og se hva som skjer...

Endret av jorn79
Skrevet

Tips om du VIL bruke while løkken.

Inni den slenger du inn en liten pause for hver runde den tar.

DateTime videre;
videre = DateTime.Now;
videre = videre.AddSeconds(3);
while (videre > DateTime.Now)
{
    System.Threading.Thread.Sleep(1000);
}

 

Da går ikke CPUen i taket.

 

Alle slike vente løkker du lager så bør du legge inn en eller annen form for venting.

 

Tilogmed System.Threading.Thread.Sleep(1) gjør at CPUen ikke går i taket.

Skrevet (endret)
Tips om du VIL bruke while løkken.

Inni den slenger du inn en liten pause for hver runde den tar.

DateTime videre;
videre = DateTime.Now;
videre = videre.AddSeconds(3);
while (videre > DateTime.Now)
{
    System.Threading.Thread.Sleep(1000);
}

 

 

 

Tja... Nå var hele vitsen å ha en liten pause, så da holder det fint med Thread.Sleep()

 

Ellers var mitt problem at jeg skrev bare

 

videre.AddSeconds(3)

 

og ikke videre = videre.AddSeconds(3)

 

som jorn79 skrev.

Endret av BpB
Skrevet
videre = videre.AddSeconds(3);

6840726[/snapback]

:blush:

Om jeg hadde hatt ei krone for hver gang jeg har gjort det samme, ville jeg faktisk hatt nok til en kronesis.

Allikevel husker jeg det ikke til neste gang.

Sukk.

 

- grå -

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...