|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2005
Messaggi: 340
|
[Java] Schedule
Codice:
class MyTask extends TimerTask {
private ControlloFile controllo;
public MyTask (ControlloFile c) {
controllo = c;
}
public void run() {
System.out.println( "Running the task" );
Timer timer = new Timer();
Timer timer2 = new Timer();
timer.schedule(controllo , 30000);
timer2.schedule(new MyTask(controllo) , 30000);
}
}
Nel controllo fai faccio un check di determinati file... e questo devo farlo a intervalli... Usando questo metodo, dopo la seconda volta che faccio il timer mi dice Exception in thread "Timer-1" java.lang.StackOverflowError Come posso ovviare o trovare un'altra soluzione? |
|
|
|
|
|
#2 |
|
Bannato
Iscritto dal: Jan 2003
Città:
Messaggi: 4421
|
...potresti usare un ticker...
Codice:
import sun.misc.Timeable;
import sun.misc.Timer;
public class Ticker implements Timeable{
public static void main(String[] args) {
new Ticker();
}
public Ticker(){
Timer ticker = new Timer(this, 3000);
ticker.cont();
}
public void tick(Timer arg0) {
System.out.println("che devo fare?");
}
}
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
devi mettere il ciclo all'interno del thread..
non puoi riutilizzare un Thread se non sbaglio Quindi hai due scelte.. crearti ad ogni ciclo un altro oggetto Timer o fare il ciclo direttametne all'interno del timer che mi pare la soluzione + pulita
__________________
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
e infatti il ticker gestisce il ciclo internamente
__________________
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: May 2005
Messaggi: 340
|
Dopo aver fatto funziona tutto ritorno con un nuovo problema
Io tramite la mia GUI, setto il tempo della esecuzione.... pero quando ho creato questa classe timer, non posso piu cambiare il tempo, come posso fare? Codice:
class Ticker implements Timeable{
private static ControlloFile controllo;
private static Configurazione conf;
private static ContenitoreDati CD;
private static TrayIcon traybar;
public static void main(String[] args) {
new Ticker(controllo, conf, CD,traybar);
}
public Ticker(ControlloFile c, Configurazione co,ContenitoreDati CD,TrayIcon tyb){
controllo = c;
conf = co;
this.CD = CD;
traybar = tyb;
System.out.println(conf.GetIntervallo());
System.out.println(conf.GetIntervallo()*60000);
Timer ticker = new Timer(this,conf.GetIntervallo()*60000 );
ticker.cont();
}
public void tick(Timer arg0) {
traybar.displayMessage(
"Scansione in corso...",
"Avviata",
TrayIcon.MessageType.INFO );
controllo.CercaFile();
FileOutputStream f = null;
try {
f = new FileOutputStream("mio.dat");
} catch (FileNotFoundException ex) {
ex.printStackTrace();
}
ObjectOutputStream out = null;
try {
out = new ObjectOutputStream(f);
} catch (IOException ex) {
ex.printStackTrace();
}
try {
out.writeObject(CD);
} catch (IOException ex) {
ex.printStackTrace();
}
try {
out.close();
} catch (IOException ex) {
ex.printStackTrace();
}
try {
f.close();
} catch (IOException ex) {
ex.printStackTrace();
}
System.out.println("passo");
traybar.displayMessage(
"Scansione in corso...",
"Completata",
TrayIcon.MessageType.INFO
);
System.out.println(conf.GetIntervallo());
}
}
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: May 2005
Messaggi: 340
|
up
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: May 2005
Messaggi: 340
|
NESSUNO SA AIUTARMI?
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:18.




















