C# wie schliesst man das Programm nach ein Paar Sekunde?

2 Antworten

"Funktioniert nicht so ganz" ist keine gültige Fehlerbeschreibung. Thread.Sleep wartet die angegebene Anzahl Millisekunden. Wenn das hier nicht funktioniert, dann musst Du schon genau sagen, inwiefern es nicht wie gewünscht funktioniert.


MysteryBow 
Fragesteller
 11.11.2020, 13:56

Ich habe eine If Else Programm erstellt mit einem Loop. Wenn der Loop dann bei True ist soll das Programm nach 3 Sekunden automatisch schliessen. Ich habe einmal gelesen, dass das mit Thread.Sleep gehen sollte. Bei mir aber schliesst es nicht automatisch. Darum frage ich mich, was ich falsch gemacht habe.

0
ohwehohach  11.11.2020, 13:57
@MysteryBow

Ja, das sollte es auch. Dass es das nicht tut, heißt, dass die Main-Methode nicht verlassen wird.

Bist Du mal im Single-Step mit dem Debugger durchgelaufen? Außerdem kann man ohne vollständigen Quellcode dazu gar nichts sagen. Ein Screenshot reicht halt nicht.

1
MysteryBow 
Fragesteller
 11.11.2020, 14:11
@ohwehohach

Habs rausgefunden. Ein Kollege hat es mir gezeigt. Ich musste noch Environment.Exit(0); hinzufügen unter dem Thread.Sleep.

0
ohwehohach  11.11.2020, 14:19
@MysteryBow

Das kann ich nicht glauben. Schick mir Deinen Quellcode, das möchte ich probieren. Das widerspricht 15 Jahren Erfahrung in der .NET Programmierung, die ich habe.

0
ohwehohach  11.11.2020, 14:23
@MysteryBow

So, habe es gerade ausprobiert. Folgender Code, Visual Studio 2019 Pro, .NET Framework 4.8:

   class Program
   {
       static void Main(string[] args)
       {
           Console.WriteLine("Hello World");
           // Thread.Sleep(3000);
       }
   }

In dieser Version beendet sich das Programm sofort, in der Version mit Thread.Sleep(3000) beendet sich das Programm nach 3 Sekunden.

Ein Environment.Exit(0) ist unnötig, sofern nicht irgendwas anderes das Programm am Laufen hält (was Du dann ungeordnet abschießt durch Environment.Exit(0)).

Dasselbe habe ich mit .NET Core 3.1 ebenfalls gemacht, gleiches Ergebnis, nur dass Visual Studio hier die Konsole mit einem Hinweis auf gewünschten Tastendruck offenhält. Das Programm selbst ist aber beendet.

0
MysteryBow 
Fragesteller
 11.11.2020, 15:02
@ohwehohach

Ja es stimmt es geht auch ohne Environment.Exit(0);. Ich habe eigentlich von Anfang an alles richtig gemacht. Aber ich dachte das Programm ist noch nicht fertig, obwohl es fertig war.

1

Wo schliesst du denn dein Programm? Nach dem Thread.Sleep() offensichtlich nicht, denn da kommt nur eine schliessende Klammer...


ohwehohach  11.11.2020, 14:04

Muss er nicht schließen. Ein Konsolenprogramm endet, wenn die Main-Methode verlassen wird. Dass das Programm sich nicht schließt, sagt mir, dass die Main-Methode eben nicht verlassen wird. Die Frage ist: Wieso. Das kann man aber nur über den vollständigen Quellcode beantworten.

0