Gå til innhold

C#: Trykker på knapp så starter thread! Men vet ikke åssen jeg kan få slått den av.


Anbefalte innlegg

Her er koden!

http://pastebin.com/f1531a45e

 

Det C# express sier er: Object reference not set to an instance of an object. på linje: 96. Denne koden her altså: timeChecker.StopTimeChecker();. Dør hele denne klassen når jeg er ferdig å trykke? Er ComputerSleepMain bare en thread som starter når jeg trykker på en knapp? I så fall, hvordan kan jeg holde på den threaden til jeg trykker på knappen igjen? Takker for alle tips om dette lille programmet. Ja, det er et program for å slå av dataen til bestemt tidspunkt.

 

Takk!

Lenke til kommentar
Videoannonse
Annonse

Er det ikke mer enn 23 timer i et døgn? :)

 

Menneh anyways, ville det ikke vært mer fornuftig å hatt timeCheckerThread i TimeChecker klassen? Tråden avsluttes jo uansett når DoCheckTime returnerer, og jeg ser ikke poenget med den Join saken du har satt der.

 

Men uansett, timeChecker faller ut av scope, hvis du ser en gang til på linje 67 ser du kanskje hva som er galt.

 

Jeg anbefaler også regex til all tekstparsing, fremfor å sjekke om tidsformatet har 5 siffer etc. så kan du bare sjekke om det følger ett eller flere mønster. Enklere å vedlikeholde, mindre kode.

Lenke til kommentar

Dette er mitt første c# app, har lekt litt med python. Men mye PHP før. Årsaken til at jeg ser på c# nå er pga. asp.net som jeg syntes ser mildt sagt genialt ut. Så klart med visual express web edition.

 

Skal ta en titt på regxp i c# , takk for tipset :).

Også! Egentlig... så klarte jeg ikke finne noe løsning selv med svaret ditt. Aldri lage en applikasjon før, bare web ting. Når Activate_Click går, så starter tråden... men jeg mister jo objektet når den er ferdig... right? Så jeg må finne et sted å ha den hvor jeg kan hente den igjen? Og hvis det blir riktig, hvor kan jeg legge den?

 

Takk skal du ha :)

Lenke til kommentar

Det objektet du lager på nytt på linje 67 vil falle ut av scope ved første }

Grunnen er at du prøver å lage den som er definert i klassen som et nytt objekt, men på den linjen lager du en ny variabel (som overrider den som er definert i klassen)

 

Så hvis du bytter linjje 67 fra

CheckTime timeChecker = new CheckTime(hour, minute);

til

timeChecker = new CheckTime(hour, minute);

 

Så burde du ikke få Object reference exception.

Lenke til kommentar

Åhhhh! Så klart. Takk skal du ha! Veldig hyggelig av deg! Setter utrolig pris på det! :)

EDIT:

Ja, det funka nå! Kan se i task manageren også at threaden forsvinner!

 

Det er også noe annet jeg lurer på. Hvorfor et så lite program bruker SÅÅ mange threads... bare 4 når jeg starter, og 5 når jeg aktiverer. og deaktiverer så ble det 4 igjne. Men, uansett. Hvorfor så mange?

Endret av niggerguy
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å
×
×
  • Opprett ny...