Die Lösung von kay73 scheint was mit Netzwerk zu tun haben, bei dir ist es aber irgend ein an den PC angeschlossenes Gerät nehme ich mal an.
Also du kannst eigene Threads erstellen, welche dann unabhängig vom Haupt-Thread (wo du deine Gui-Aktionen verarbeitest etc., oder einfach alles das nicht blockiert) laufen. Der Haupt-Thread ist derjenige der sozusagen mit der main-Methode gestartet wird.
Ein Thread sieht grob so aus, wobei es eigentlich ein ganz normales Objekt ist wo du die run()-Methode überschreibst und mit deinem Code füllst:
[code=Java]
public class SomeThreadObject extends Thread {
private boolean done = false; //evtl. volatile?
private boolean doneOK = false;
public SomeThreadObject() {
}
@Override
public void run() {
done = false;
doneOK = false;
while (!done) {
//Hier läuft dann dein Versuch die ID zu lesen etc.
sleep(3000);
}
doneOK = true;
}
public void done() {
if (!this.isAlive()) {
return;
}
//Wait until the "run"-loop ended
while (!doneOK) {
done = true;
interrupt();
try {
sleep(200);
} catch (InterruptedException e) {}
}
}
}
[/code]
Informiere dich doch ein wenig über Threads in Java, ist eine praktische Sache und wirst du in solchen Situationen immer wieder brauchen können.
Hinweis:
1. Anstatt Thread kannst du auch Runnable verwenden. Weiss jetzt nicht mehr genau was die Vorteile sind oder ob es überhaupt Vorteile gibt.
2. Wenn sich der Thread nicht sowieso selbst beendet (wenn die run-Methode fertig ist) brauchst du die done() Methode nicht. Willst du den Thread aber "von aussen" beenden, musst du selbst einen Mechanismus einbauen, zum Beispiel wie ich es im Codebeispiel habe.
mfg