Zitat: |
Mit Task.Wait() sehe ich zwar die Ausgabe, verstehe aber den Vorgang trotzdem nicht (und das würde ich gern). Wenn keine Ausgabe erfolgt, habe ich das unsichere Gefühl, der Thread wird gar nicht ausgeführt. |
Deine Aussage ist so schon Richtig. Die Ausgabe erfolgt nicht weil dein Thread die Ausgabe nicht schaft zu erreichen.
Dein Programm wird durch die Main Methode als Prozess gestartet. Nun erstellst du in der Main Methode einen Thread durch Thread.start(). Dein Prozess hat nun zwei Threads, welche unabhängig von einander arbeiten. Der Thread in dem aber deine Main Methode arbeitet hat nach dem Thread.start() nichts mehr zu tun. Dadurch wird die Main Methode fertig und somit endet auch dein Prozess. Der Thread, welchen du aber in der Main-Methode gestartet hast ist nur solange aktiv wie dein Prozess aktiv ist.
Stelle dir das so vor:
1. Du hast ein Programm, welches als Prozess arbeitet.
2. Du hast deine Main Methode, welche wenn sie fertig ist deinen Prozess schließt.
3. Startest du nun in der Main Methode einen Thread -> hat dein Prozess 2 Threads.
4. Der Thread der Main-Methode wird als erster fertig, schließt den Prozess und damit auch deinen noch nicht fertigen aktiven Thread.
5. Thread.wait() sagt dem Thread der Main-Methode er soll solange warten bis der andere Thread fertig ist. -> Dein weiter Thread erzeugt die Ausgabe
mfg
Gerald