Per prima cosa: grazie per la risposta.
In effetti utilizzo il Timer basandomi su degli esempi trovati in rete e non sono certo di aver creato un applicazione ottimale.
Ti posto il codice del main
codice:
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.Icon;
import javax.swing.Timer;
import org.libnodave.Nodave;
public class Main {
//--------------------------------------------------------------------------
// Variabili globali della classe
protected static FrmMain frmMain;
// Variabili globali
private static ComIsoTcp tp;
private static int resConn;
// Timer ciclico per lettura/scrittura dati da/su PLC
private static Timer tmrGenerale =
new Timer(100, new java.awt.event.ActionListener() public void
actionPerformed(java.awt.event.ActionEvent e) {
//-------------------------------------------------------------------
// Arresto il timer per il tempo necessario all'esecuzione delle
// operazioni di lettura e scrittura
tmrGenerale.stop();
//-------------------------------------------------------------------
// leggo/scrivo i dati sul PLC
//-------------------------------------------------------------------
// Abilito timer
tmrGenerale.start();
}
});
public static void main(String[] args) {
FileINI.leggiINI();
// Abilito timer
tmrGenerale.start();
frmMain = new FrmMain();
frmMain.setVisible(true);
FileINI.scriviINI();
}
}
Quindi...
Questo è quello che faccio.
Il Main crea il JFrame e intanto gestisce l'aggiornamento delle variabili lette/scritte sul PLC.
Come ho detto, quando richiamo una funzione di lettura/scrittura questa mi blocca l'esecuzione del programma, quindi anche l'interfacci grafica, per alcuni istanti dando la spiacevole sensazione di andare a scatti.
Grazie anche per il parere sui Thread, mi mettero a studiare