Hallo Zusammen,
ich habe folgendes Problem:
Ich habe eine "Hauptklasse", welche sich hauptsächlich um das Frontpanel der Anwendung kümmert.
Darin habe ich einen Thread als public static Thread deklariert.
Dieser Thread wird in einer zweiten Klasse "Messung" erzeugt und abgearbeitet.
Wenn jemand auf dem Frontpanel dann einen Stop Button betätigt, soll dieser Thread beendet werden.
Wenn ich das ganze in meiner Entwicklungsumgebung laufen lasse funktioniert das auch soweit prima. Allerdings habe ich jetzt bei einem Kollegen gesehen, der die Anwendung als .jar ausführt, dass die komplette Anwendung einfriert, wenn dort der Stop Button betätigt wird. Dann hilft leider nur noch der Task Manager...
Hat jemand eine Idee, woran das liegen kann?
Hier sind Code Ausschnitte, welche die wichtigsten Punkte für den Thread beinhalten.
Hat jemand eine Idee, was da schief laufen könnte?
ich habe folgendes Problem:
Ich habe eine "Hauptklasse", welche sich hauptsächlich um das Frontpanel der Anwendung kümmert.
Darin habe ich einen Thread als public static Thread deklariert.
Dieser Thread wird in einer zweiten Klasse "Messung" erzeugt und abgearbeitet.
Wenn jemand auf dem Frontpanel dann einen Stop Button betätigt, soll dieser Thread beendet werden.
Wenn ich das ganze in meiner Entwicklungsumgebung laufen lasse funktioniert das auch soweit prima. Allerdings habe ich jetzt bei einem Kollegen gesehen, der die Anwendung als .jar ausführt, dass die komplette Anwendung einfriert, wenn dort der Stop Button betätigt wird. Dann hilft leider nur noch der Task Manager...
Hat jemand eine Idee, woran das liegen kann?
Hier sind Code Ausschnitte, welche die wichtigsten Punkte für den Thread beinhalten.
Java:
public class Hauptklasse extends javax.swing.JFrame
{
public static Thread messung_thread = null;
public Hauptklasse()
{
...
}
private void startButtonActionPerformed(java.awt.event.ActionEvent evt)
{
Messung mess = new Messung(this);
mess.Start();
}
private void stopButtonActionPerformed(java.awt.event.ActionEvent evt)
{
if(messung_thread != null)
{
if(messung_thread.isAlive())
{
messung_thread.interrupt();
}
}
}
}
Java:
import static components.Hauptklasse.messung_thread;
public class Messung
{
Hauptklasse mclass;
Messung(Hauptklasse hauptclass)
{
this.mclass = hauptclass;
}
public void Start()
{
messung_thread = new Thread()
{
@Override
public void run()
{
try
{
//...Messung läuft
}
catch(InterruptedException iex)
{
...
Thread.currentThread().interrupt();
}
catch(Exception ex)
{
...
Thread.currentThread().interrupt();
}
}
};
//Parameter der Messung abfragen
messung_thread.setName("Messung_laueft");
messung_thread.start();
}
}
Hat jemand eine Idee, was da schief laufen könnte?