Java:
Hallo zusammen,
ich versuche einen thread zu beenden, leide rklappt da snicht.
ich habe es mit stop() probiert (die ja veraltet ist), damit klappte es nicht - der Thread lief weiter.
wenn ich interruot benutze und mittels try/catch auf InterruptedException prüfe sagt Eclipse lediglich, dass diese Exception dort niemals fliegt.
Der Aufbau ist in etwa so:
new Thread()
{
public void run()
{
openWaitForGenerationWindow(); // öffnet ein fenster names frame_WaitForGeneration
}
}.start();
thread = new Thread()
{
public void run()
{
while (keine passende Aufgabe gefunden)
{
generiereAufgabe();
}
frame_WaitForGeneration.dispose();
}
}
thread.start();
Falls der User in dem geöffneten Fenster nun schließen drückt, soll der Thread unterbochen werden.
So sieht der Listenerteilausschnitt aus:
Java:
public void windowClosing(WindowEvent e)
{
if (frame_WaitForGeneration != null && frame_WaitForGeneration.isVisible())
{
frame_WaitForGeneration.dispose(); // schließe das Fenster
thread.stop(); // Beende den Thread
clearView(); // Blende die aktuelle Ansicht aus
panel_Start.setVisible(true); // Blende die Ansicht ein, die bei Abbruch wieder zu sehen sein soll
}
}
Das funktioniert nun nicht.
1. sagt er mir das
Code:
thread.isAlive()
2. Wird beim zweiten Starten der Thread nicht mehr beendet, beim ersten Mal schon.
Das heißt, das Fenster wird geschlossen die Ansicht korrekt gewechselt, aber im Hintergrund wird munter weiter generiert.
Kann mir jemand sagen wie ich das korrekt implementieren kann?
Vielen Dank und beste Grüße