Pålitelig timer i en konsoll applikasjon

stemmer
83

Jeg er klar over at i .NET det er tre timer-typer (se Sammenligning av tidsur klasser i .NET Framework Class Library ). Jeg har valgt en gjenget timer som de andre typene kan drive hvis hovedtråden er opptatt, og jeg trenger dette for å være pålitelig.

Måten denne timeren fungerer i kontrollen av timeren er satt på en annen tråd, så det kan alltid huke sammen med arbeidet begynner fullført på den overordnede tråd når det ikke er opptatt.

Problemet med denne timeren på en konsoll applikasjon er at mens timeren tikker av gårde på en annen tråd hovedtråden er ikke å gjøre noe så programmet lukkes.

Jeg prøvde å legge en while trueløkke, men da hovedtråden er for opptatt når tidtakeren går av.

Publisert på 01/08/2008 klokken 12:43
kilden bruker
På andre språk...                            


2 svar

stemmer
52

Du kan bruke noe sånt som Console.ReadLine()å blokkere hovedtråden, slik at andre bakgrunns tråder (som tidtaker tråder) vil fortsatt fungere. Du kan også bruke en AutoResetEvent å blokkere gjennomføringen, da (når du trenger det) kan du ringe Set () metoden på at AutoResetEvent objekt for å frigjøre hovedtråden. Også sørge for at din referanse til Timer objektet ikke gå ut av omfang og søppel samles.

Svarte 01/08/2008 kl. 12:56
kilden bruker

stemmer
19

Vurder å bruke en ManualResetEvent å blokkere hovedtråden ved enden av dens behandling, og ring Reset()på den en gang timerens behandlingen er fullført. Hvis dette er noe som må kjøre hele tiden, vurdere å flytte dette til en tjeneste prosess i stedet for en konsoll app.

Svarte 01/08/2008 kl. 12:55
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more