S
Starbuck1865
Gast
Hallo,
ich hab hier ein kleines Problem, wenn ich in meinem AWT Hauptprogrammfenster einen Button drücke, erzeuge ich einen neuen Thread mit einem kleinen AWT Fenster (Die Klasse die in dem Thread instanziert wird, erbt also von Frame und implementiert runnable). In der run() Methode des Threads ist eine Endlosschleife die nach bestimmter Zeit ein repaint auslöst.
Wenn das Fenster geschlossen wird, soll über die WindowsClosing() Methode auch der Thread richtig beendet werden.
Meine Frage ist, wie mache ich das richtig. Denn bisher habe ich es nur geschafft, den Thread in den suspend Modus zu bringen. Das meint jedenfalls der Debugger vom Eclipse.
Aber dann ist der ganze Speicher ja noch nicht freigegeben, oder?
Meine WindowClosing Methode und run Methode();
Ich hab auch schon mit thread.stop experimentiert, oder versucht die Endlosschleife mit einem interrupt zu unterbrechen. Beides hat auch blos zum suspend des Threads geführt.
Muss ich eventuell in der WindowClosed() Methode noch irgendwas freigeben? Aber die kann ja eigentlich gar nicht mehr erreicht werden, wenn der Thread, welcher das Frame beherbergt geschlossen wird.
Und müsste nicht der Carbage Collector mit dem Müll aufräumen der da suspended ist?
nach schließen des Threads, zeigt mir der Eclipse Debugger folgendes an:
Thread [Thread-4] (Suspended (exception NullPointerException))
SignalMonitor.paint(Graphics) line: 225
SignalMonitor.repaint() line: 237
SignalMonitor.run() line: 197
Thread.run() line: 595
Vielen Dank für Hilfe im voraus
ich hab hier ein kleines Problem, wenn ich in meinem AWT Hauptprogrammfenster einen Button drücke, erzeuge ich einen neuen Thread mit einem kleinen AWT Fenster (Die Klasse die in dem Thread instanziert wird, erbt also von Frame und implementiert runnable). In der run() Methode des Threads ist eine Endlosschleife die nach bestimmter Zeit ein repaint auslöst.
Wenn das Fenster geschlossen wird, soll über die WindowsClosing() Methode auch der Thread richtig beendet werden.
Meine Frage ist, wie mache ich das richtig. Denn bisher habe ich es nur geschafft, den Thread in den suspend Modus zu bringen. Das meint jedenfalls der Debugger vom Eclipse.
Aber dann ist der ganze Speicher ja noch nicht freigegeben, oder?
Meine WindowClosing Methode und run Methode();
Code:
public void windowClosing ( WindowEvent e)
{
e.getWindow().setVisible(false);
e.getWindow().dispose();
}
public void run()
{
do
{
try
{
Thread.sleep(100);
repaint();
}
catch(InterruptedException interruptedexception)
{
}
}
while(true);
}
Ich hab auch schon mit thread.stop experimentiert, oder versucht die Endlosschleife mit einem interrupt zu unterbrechen. Beides hat auch blos zum suspend des Threads geführt.
Muss ich eventuell in der WindowClosed() Methode noch irgendwas freigeben? Aber die kann ja eigentlich gar nicht mehr erreicht werden, wenn der Thread, welcher das Frame beherbergt geschlossen wird.
Und müsste nicht der Carbage Collector mit dem Müll aufräumen der da suspended ist?
nach schließen des Threads, zeigt mir der Eclipse Debugger folgendes an:
Thread [Thread-4] (Suspended (exception NullPointerException))
SignalMonitor.paint(Graphics) line: 225
SignalMonitor.repaint() line: 237
SignalMonitor.run() line: 197
Thread.run() line: 595
Vielen Dank für Hilfe im voraus