Bonjour à tous,
Voila, dans mon appli je crée un Thread qui doit effectuer une tache en fond entre deux heures définies par l'utilisateur.
Dans le constructeur du thread je récupère la date courante de cette maniere :
Ensuite voila ma méthode run() :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 GregorianCalendar cal = new GregorianCalendar(); d = cal.getTime();
Pour l'instant la tache à réaliser est un simple println suivit d'un court sleep().
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 public void run(){ while(true){ if(beginH<endH){ if((d.getHours()>=beginH) && (d.getHours()<endH)){ System.out.println(d.toLocaleString()); try { Thread.sleep(5000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else try { //sleeps for 15 minutes Thread.sleep(900000); }catch (InterruptedException e){ System.out.println(e.getMessage()); } } if(beginH>endH){ if((d.getHours()>=beginH) || (d.getHours()<endH)){ System.out.println(d.toLocaleString()); try { Thread.sleep(5000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else try { //sleeps for 15 minutes Thread.sleep(900000); } catch (InterruptedException e) { e.printStackTrace(); } } }
Le problème est que le d.getHours() retourne toujours l'heure à laquelle l'appli a été lancé donc si l'appli est lancée en dehors de la plage de fonctionnement la tache n'est jamais réalisée et si l'appli est lancée dans la plage horaire définie par l'utilisateur alors la tache s'effectue tout le temps même lorsque l'heure de fin a été dépassée.
J'ai un peu de mal à comprendre d'où vient ce problème.
Merci
Partager