Mon programme blocke quand il est démarrer le processus
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
je suis entrain de programmer une application qui prend des information de base de donnée et le enregistrer dans des fichiers .
le base de donnée est grand . le preccessus est pris le temps , et je veux ajouter l'option de pause et continue .
mais le problème est quand il est démarrer l'opération il est blocker , dans ce moment je peux pas faire pause , et le programme utilise 100% processeur de mon pc .
est-ce-qu'il y a une solution pour ça ?
et merci d'avance !
je suis entrain de programmer une application qui prend des information de base de donnée et le enregistrer dans des fichiers .
le base de donnée est grand . le preccessus est pris le temps , et je veux ajouter l'option de pause et continue .
mais le problème est quand il est démarrer l'opération il est blocker , dans ce moment je peux pas faire pause , et le programme utilise 100% processeur de mon pc .
est-ce-qu'il y a une solution pour ça ?
et merci d'avance !
A voir également:
- Mon programme blocke quand il est démarrer le processus
- Mon pc s'allume mais ne démarre pas windows 10 - Guide
- Programme demarrage windows - Guide
- Pc long a demarrer - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
- Demarrer pc a distance - Guide
1 réponse
Je viens de faire quelque chose d'assez compliqué qui permet de rajouter une icône dans la barre des tâches et de l'utiliser pour faire des pauses dans le programme. Normalement tu n'auras pas à modifier cette partie là du code, donc ce n'est pas grave si tu ne la comprends pas. En revanche regarde la classe de test pour voir comment l'utiliser, et adapter ton code en fonction... J'espère que ça te sera utile.
import java.awt.Image; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class Test implements PauseTray.Pausable { private static boolean go = false; @Override public void pause() { System.out.println("PAUSE"); go = false; } @Override public void start() { System.out.println("START"); go = true; } @Override public void stop() { System.out.println("STOP"); } private static void sleepIfPause(int millis) { while (!go) { try { Thread.sleep(millis); } catch (InterruptedException e) { e.printStackTrace(); } } } public static void main(String[] args) throws IOException { Image icon = ImageIO.read(new File("C:/icon.png")); PauseTray.addTrayWithPausable(new Test(), icon).start(); for (long i=0;;i++) { sleepIfPause(100); System.out.println(i); } } } //----------------------------------------------------------- import java.awt.AWTException; import java.awt.Image; import java.awt.MenuItem; import java.awt.PopupMenu; import java.awt.SystemTray; import java.awt.TrayIcon; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class PauseTray { public interface Pausable { public void pause(); public void start(); public void stop(); } public static Pausable addTrayWithPausable(final Pausable pausable, final Image icon) { final MenuItem start = new MenuItem("start"); final MenuItem pause = new MenuItem("pause"); final MenuItem stop = new MenuItem("stop"); try { PopupMenu popup = new PopupMenu(); popup.add(start); popup.add(pause); popup.addSeparator(); popup.add(stop); TrayIcon trayIcon = new TrayIcon(icon); trayIcon.setPopupMenu(popup); SystemTray.getSystemTray().add(trayIcon); } catch (AWTException e) { throw new RuntimeException(e); } pause.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { pause.setEnabled(false); try { pausable.pause(); } catch (Throwable t) { t.printStackTrace(); System.exit(1); } start.setEnabled(true); } }); start.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { start.setEnabled(false); try { pausable.start(); } catch (Throwable t) { t.printStackTrace(); System.exit(1); } pause.setEnabled(true); } }); stop.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { try { pausable.stop(); System.exit(0); } catch (Throwable t) { t.printStackTrace(); System.exit(1); } } }); start.setEnabled(true); pause.setEnabled(false); stop.setEnabled(true); return pausable; } }
autre chose : je peux pas changer un jtextfied de classe a par un code a.jtextfield.settext("bla bla") dans classe b.
et merci pour vous