Avatar billede strafenmacher Nybegynder
15. november 2003 - 17:58 Der er 9 kommentarer og
1 løsning

Lukning af program

Jeg kan i C# ikke umiddelbart finde en  kodelinie til lukning af et program. Det burde jo ellers være ganske enkelt (hvilket det sikkert også viser sig at være).
I Java anvender man koden "System.exit(0);", men denne kan ikke anvendes i C#. Findes der en nogenlunde tilsvarende kodelinie i C# ?
Avatar billede finger Nybegynder
15. november 2003 - 18:03 #1
application.exit()
Avatar billede arne_v Ekspert
15. november 2003 - 18:51 #2
Environment.Exit(0);

er det ekvivalente til Java's:

System.exit(0);
Avatar billede arne_v Ekspert
15. november 2003 - 18:53 #3
Application.Exit();

gør noget lidt andet. Citat fra docs:

This method stops all running message loops on all threads and closes all windows of the application. This method does not force the application to exit. The Exit method is typically called from within a message loop, and forces Run to return.

[men i de fleste tilfælde er det nok det samme]
Avatar billede nielsbrinch Nybegynder
15. november 2003 - 19:00 #4
Environment.Exit(0) lukker dog ikke nødvendigvis alle tråde i programmet.
Avatar billede strafenmacher Nybegynder
15. november 2003 - 19:11 #5
Jeg har afprøvet begge løsninger, -og jeg må pænt aflevere de 30 point til Arne V., da det viste sig, at han havde fuldstændig ret. "Environment.Exit(0)" virker efter hensigten, -det gjorde "Application.Exit(0)" derimod ikke (men det fremgår også tydeligtt ifølge Arne's citat, at denne har en anden funktion !).
Tak for hjælpen.
Avatar billede arne_v Ekspert
15. november 2003 - 19:20 #6
niels>

Sikker ?

Jeg kan ikke finde nogen info i docs, men normalt forventer man da at
tråde dør med processen.
Avatar billede strafenmacher Nybegynder
15. november 2003 - 19:22 #7
Til orientering !
-I øvrigt tror jeg slet ikke, at man kan anvende "Application.Exit(0)", når man arbejder med Console Application (jeg fik ikke nævnt, at det var en sådan applikation jeg arbejdede på i øjeblikket !). Derimod ser det ud til, at metoden er anvendelig, når man arbejder med eksempelvis Windows Forms.
Avatar billede nielsbrinch Nybegynder
15. november 2003 - 19:51 #8
Ja arne_v, helt sikker. Den har opført sig sådan begge gange jeg har benyttet mig af tråde. Den ene gang hvor jeg lytter på en netværksforbindelse. Den anden hvor tråden sover i 10 sekunder (og så lukker jeg den ved at tjekke på en variabel når den vågner). Men hvis jeg sætter den til at sove i 60 sekunder, så varer det op til 60 sekunder før processen lukker i Task Manager.
Avatar billede nielsbrinch Nybegynder
15. november 2003 - 19:57 #9
Jeg har lavet denne metode i klassen der indeholder tråden.

public void stopThread() {
  running = false;
  checkerThread.Abort();
}

Når jeg udfører den metode, stopper tråden med det samme, selvom den sover.
Avatar billede nielsbrinch Nybegynder
15. november 2003 - 20:01 #10
Jeg må lige vænne mig til at skrive det hele i én besked, så I ikke bliver spammet med mails :-)

Lidt flere tests viser at Abort() på tråden er rigeligt til at stoppe den. I øvrigt kastes den meget praktiske ThreadAbortException så man lige kan udføre nogle ting i sidste øjeblik.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester