Blocage des évènements au cours d'un calcul
Résolu
benoit_28
Messages postés
44
Date d'inscription
Statut
Membre
Dernière intervention
-
benoit_28 Messages postés 44 Date d'inscription Statut Membre Dernière intervention -
benoit_28 Messages postés 44 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Dans mon programme Java, je fais des calculs longs et compliqués. Normalement, même au cours de calculs, les interruptions de l'ActionListener par ActionPerformed sont possibles: l'évènement est gardé en mémoire jusqu'à ce que le programme puisse le gérer.
Mais dans le cas qui m'occupe, je déclenche par mon menu une action, et rien ne se passe, comme si la sélection de mon MenuItem n'avait pas existé, de même avec les clics. Et ce n'est que quand mon calcul est terminé que je peux déclencher un nouvel évènement avec succès.Avez vous une idée comment je pourrais interrompre mes calculs pour faire place à l'interruption? J'ai fait différents essais mettre en sommeil par
try {Thread.sleep(50);}
catch (InterruptedException signal){System.out.println("catch ");}
ou essayer de trouver si cela venait de segments particuliers de mon calcul en supprimant l'un après l'autre ces segments: ces suppressions ne font rien, l'évènement que je pense déclencher n'arrive pas. Par contre, dès que le calcul est terminé, de nouveau les évènements peuvent être utilisés.
Avez vous une idée comment résoudre ce problème?
D'avance merci.
Dans mon programme Java, je fais des calculs longs et compliqués. Normalement, même au cours de calculs, les interruptions de l'ActionListener par ActionPerformed sont possibles: l'évènement est gardé en mémoire jusqu'à ce que le programme puisse le gérer.
Mais dans le cas qui m'occupe, je déclenche par mon menu une action, et rien ne se passe, comme si la sélection de mon MenuItem n'avait pas existé, de même avec les clics. Et ce n'est que quand mon calcul est terminé que je peux déclencher un nouvel évènement avec succès.Avez vous une idée comment je pourrais interrompre mes calculs pour faire place à l'interruption? J'ai fait différents essais mettre en sommeil par
try {Thread.sleep(50);}
catch (InterruptedException signal){System.out.println("catch ");}
ou essayer de trouver si cela venait de segments particuliers de mon calcul en supprimant l'un après l'autre ces segments: ces suppressions ne font rien, l'évènement que je pense déclencher n'arrive pas. Par contre, dès que le calcul est terminé, de nouveau les évènements peuvent être utilisés.
Avez vous une idée comment résoudre ce problème?
D'avance merci.
Configuration: Windows / Firefox 98.0
A voir également:
- Blocage des évènements au cours d'un calcul
- Calcul moyenne excel - Guide
- Calcul km marche à pied gratuit - Télécharger - Sport
- Panne tnt en cours aujourd'hui - Guide
- Commande en cours de validation fnac - Forum Consommation & Internet
- Blocage messenger - Guide
1 réponse
Bonjour,
Un programme peut gérer plusieurs thread qui s'exécutent en parallèle, mais ce que tu décris laisse à penser que tu fais ton calcul dans l'EDT (le thread qui gère les événements), il faudrait plutôt utiliser un nouveau thread pour faire ton calcul (par exemple un SwingWorker), ça permet de libérer l'EDT afin qu'il puisse lire les nouveaux événements qui arrivent, même si ton calcul n'est pas terminé.
Plus d'info sur l'EDT et les SwingWorker : https://rom.developpez.com/java-swingworker/
Un programme peut gérer plusieurs thread qui s'exécutent en parallèle, mais ce que tu décris laisse à penser que tu fais ton calcul dans l'EDT (le thread qui gère les événements), il faudrait plutôt utiliser un nouveau thread pour faire ton calcul (par exemple un SwingWorker), ça permet de libérer l'EDT afin qu'il puisse lire les nouveaux événements qui arrivent, même si ton calcul n'est pas terminé.
Plus d'info sur l'EDT et les SwingWorker : https://rom.developpez.com/java-swingworker/
benoit_28
Messages postés
44
Date d'inscription
Statut
Membre
Dernière intervention
Merci KX