Hello !!!

C'est rare que je poste un post sur les forrums ... mais là je suis à bout d'idées !
Bref,
Voilà mon soucis,

J'ai crée une interface graphique pour mon programme, cettte interface me permet
de gérer plusieurs paramètres du logiciel.
Sur un des panels je peux lancer et arrêter les services principaux de ce soft!

un service BS(BS.exe) et BA(BA.exe) ... jusque là tout va bien !
(je peux arrêter et redémarrer mes services avec le gestionnaire de service windows!)

Quand je click sur le boutton démarrer ou le boutton arrêter, toujours pas de soucis!
tous fonctionne! mes services s'arrête et redémarre si je click sur l'un des boutton.
Dans actionListener des bouttons j'executes des méthodes qui envois des commandes
externe à java. - net star, et net Stop -
les voici,

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
// une classe Service que j'ai créé pour Dem./Arrê. les services
 
	public void Demarrage (String NomService)
	{
		try
		{
			cmd = Runtime.getRuntime().exec(new String [] {"net", "start", NomService,"/y"});
		}
		catch (IOException ExpDemarrage) 
		{
			ExpDemarrage.printStackTrace();
		}	
	}
 
 
	public void Stop (String NomService)
	{
		try
		{
			cmd = Runtime.getRuntime().exec(new String [] {"net","stop", NomService,"/y"});
		}
		catch (IOException ExpStop) 
		{
			ExpStop.printStackTrace();
		}	
	}
mon soucis !

l'affichage d'une icone sur mon interface.
Lorsque le service est démarré, j'ai un feux Vert.
Lorsque le service est arrêté, j'ai un feux Rouge.

dans un souccis d'efficacité et de sécurité,
j'ai pensé à mettre un StandBye pendant l'arrêt et le redémarrage des services.
afficher un feux Orange, et désactiver les buttons (Arrêter/Démarrer)
pendant le démarrage ou l'arrêt des services.

j'appelle pour cela une méthode, Attente. de la classe Service Que voici.


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
	public void Attente (long tmp)
	{
		try
		{
			Thread.sleep(tmp);
		}
		catch (InterruptedException e)
		{
			e.printStackTrace(); 
		}
	}
elle recoit en paramètre le temps d'attente.
cela me permet de désactiver les bouton pour que l'utilisateur ne démarre pas
et arrête aussi tôt les service. et pendant ce temp, j'affiche une icone en
feux organe!

OUF! vien enfin ma question,

>> Service démarré le feu est vert
>> j'arrête ...
>> Tout se fige ! mes boutons incacessible (normal! j'ai demandé! mais bon pas complètement désac.)
>> Le feux ne passe pas à l'orange ! pourtant le temps d'attente est de 5 secondes!
>> sous windows le service c'est bien arrêté ...
>> mon soft attent 5 seconde et me rend la main ... LE feu est ROUGE directe!
Je n'ai pas vu le feux en orange ...

voilà un bout de l'appli :

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
...
ImageIcon start = new ImageIcon (getClass().getResource("/img/start.png"));
ImageIcon pause = new ImageIcon (getClass().getResource("/img/pause.png"));
ImageIcon stop  = new ImageIcon (getClass().getResource("/img/stop.png"));
 
// une classe Service que j'ai créé pour Dem./Arrê. les services e géré le temps d'attente.
Service process = new Service (); 
...
	public void actionPerformed (ActionEvent e)
    	{
    	...
		if (e.getSource() == jButton1)
    		{
    			jLabel42.setIcon(pause);	// j'affiche l'icone Pause (ORANGE)
    			process.Stop("BS"); 		// je démarre le service BS
    			jButton1.setEnabled(false);	// je désactive le premier bouton
    			jButton2.setEnabled(false);	// je désactive l'autre bouton
    			process.Attente(5000); 		// j'attends 5000 miliSec. (5sec) 
    			jLabel42.setIcon(stop);		// j'affiche l'icone Stop (Rouge)	
    			jButton1.setEnabled(true);	// je Réactives les boutons
    			jButton2.setEnabled(true);	// je Réactives les boutons
		}
 
	...
	}
dans le fond tout fonctionne ... seulement tout se fige ... pendant la pause ...
et le ne vois pas mon ... icone orange ...
je suis sur que le service démarre ... juste par ce que à ce moment là c'est plus JAVA
qui gère ... ma commande est passé à l'OS ... et c'est OS qui gere ... mon arrêt du service ...
Les boutons ne sont pas désactivé ... il sont tout simplement bloqué ...
car je ne les vois pas grisé ... (juste inacessible !)

Est-ce une bonne méthode pour faire une pause ... dans le programme ... sans boufé de la resource??
Car je soupsonne plus la méthde d'attente ... qui est Thread qui s'execute.
mais j'ai bien demandé à mon icone de changé d'adord !
ensuite désactiovation des bouton ...
et ensuite la pause ...
Hors ... j'ai l'impression que ... pas le temps ... de réagir ... que déjà le Thread s'execute !

TOUT SE COMPILE PARFAITEMENT !


que dois je faire ... MERCI !

Avis aux solutions ... ???

Voici un appercu de l'interface :