real studio fermeture application

CathyGYM

Membre actif
28 Novembre 2010
160
1
Bonjour,
Je viens de terminer le développement de mon application. Celle-ci fonctionne très bien, et c'est d'ailleurs un peu (même beaucoup) grâce à ce forum. Il me reste un petit problème à résoudre ; çà va paraître stupide, mais j'ai du mal à fermer mon application. Lorsque je travaillais sous visual basic, je mettais "end" dans la programmation du bouton de fin et tout allait bien... Sur real basic, j'ai un peu plus de problème ! Je ferme la fenêtre active et je fais app.autoquit=true, et l'application se ferme apparemment... mais en réalité le process continue de tourner et la seule solution pour le fermer est d'utiliser "force à quitter", ce qui me semble assez "violent"...
Quelqu'un a-t-il une solution ? :D:D
Merci d'avance...
 
Bonjour,

Bloc de code:
Quit
Ce code suffit pour quitter l'application, tu n'as pas besoin de fermer la fenêtre active par code.


Bloc de code:
App.autoquit=true
ce code permet seulement à l'utilisateur de quitter l'application automatiquement s'il ferme la dernière fenêtre.
Le bogue est ailleurs ou après ce code
 
Bloc de code:
Quit
Ce code suffit pour quitter l'application, tu n'as pas besoin de fermer la fenêtre active par code.

Merci Mac_Jac, mais çà j'avais déjà essayé :siffle: et si je ne fais pas Feuille.close avant, il ne se passe rien, et j'ai toujours le même problème...

Le bogue est ailleurs ou après ce code...
As-tu une idée de ce qui peut empêcher un process de s'arrêter ?
NB tous les fichiers de travail ont bien été fermés et détruits. Les scripts se sont bien exécutés.
Je ne comprends vraiment pas :heu:

Merci quand même...
 
Pour info, je viens d'essayer de mettre une boite de dialogue dans l'event Aplication.close, et apparemment il n'y passe jamais, même après être passé sur la ligne "quit", j'y avais mis la ligne suivante :
Bloc de code:
MsgBox str(WindowCount)
J'ai également vérifié toutes les déclarations pour le cas où il y aurait un écrasement de données...

Et toujours pareil...:confused::confused::confused:
 
Bonjour,

Les lignes de code après la ligne Quit ne seront jamais lues.

Real Studio exécutera les codes dans les events Close des (objets, fenêtres et application) après la commande Quit.

Est-ce que tu as une fenêtre modale d'ouverte ?
si oui l'application ne quittera pas, peut-être que tu as fait un hide au lieu de close sur la fenêtre modale.

Est-ce que tu as du code dans l'event CancelClose de l'application ?
SI oui, il faut mettre, return false à la fin de l'event CancelClose pour que l'application quitte.



Pour déboguer, il faut mettre un breakpoint à coté (à gauche) de la ligne Quit, un clic sur la partie en gris affichera un point rouge.
Execute l'application.
Clic sur ton bouton pour quitter.
Le débogueur s'affichera lorsqu'il sera rendu à la ligne Quit, il suffit de cliquer sur le bouton "Pas à pas" pour voir chaque ligne le code qui s'exécute.
 
Bonjour,

Les lignes de code après la ligne Quit ne seront jamais lues.

Real Studio exécutera les codes dans les events Close des (objets, fenêtres et application) après la commande Quit.

Est-ce que tu as une fenêtre modale d'ouverte ?
si oui l'application ne quittera pas, peut-être que tu as fait un hide au lieu de close sur la fenêtre modale.

Est-ce que tu as du code dans l'event CancelClose de l'application ?
SI oui, il faut mettre, return false à la fin de l'event CancelClose pour que l'application quitte.

c'est valide pour n'importe quel toolkit il faut etre serieusement demeuré pour ne pas le comprendre, il y a un thread ending badly et l'application reste stale dans le background avant de quitter un process qui hold plusieurs threads -> WaitForThread then stop and delete
 
Merci encore Mac-Jac, mais malheureusement, cette fois-ci, j'avais déjà cherché dans les mêmes directions...

Est-ce que tu as une fenêtre modale d'ouverte ?
si oui l'application ne quittera pas, peut-être que tu as fait un hide au lieu de close sur la fenêtre modale.

Est-ce que tu as du code dans l'event CancelClose de l'application ?
SI oui, il faut mettre, return false à la fin de l'event CancelClose pour que l'application quitte.

J'ai effectivement des fenêtres modales, mais à chaque fois, je les quitte avec .close. Je faisais .hide avant, mais comme çà me posait des problèmes dans le reste du code j'avais déjà dû modifier ces lignes. Donc de ce côté là pas de problème...

Concernant les events, je n'ai aucun code dans l'application, mais tout est dans la fenêtre principale, et dans les fenêtres modales.... Est-ce que le problème peut venir de là ?

Pour déboguer, il faut mettre un breakpoint à coté (à gauche) de la ligne Quit, un clic sur la partie en gris affichera un point rouge.
Execute l'application.
Clic sur ton bouton pour quitter.
Le débogueur s'affichera lorsqu'il sera rendu à la ligne Quit, il suffit de cliquer sur le bouton "Pas à pas" pour voir chaque ligne le code qui s'exécute.

J'ai effectivement pas mal utilisé le débogueur depuis quelques jours... D'ailleurs je le trouve un peu moins pratique que celui de VB ! Et en particulier, j'ai pu constater que la ligne "Quit" est bien executée, mais que l'application reste ouverte. D'ailleurs, à ce sujet, lorsque la ligne en question est exécutée, un beep est émis :eek:, cela doit signifier qu'il y a un problème lors de l'exécution de cette ligne, mais pas de message particulier (d'erreur ou autre). :hein:

Comme je suis sérieusement demeurée :D, je me pose une question : est-ce gênant que je n'ai pas de code dans l'application, ni de "menu bar"? car en fait mon application tourne avec une simple fenêtre principale contenant trois boutons et une zone de texte. Deux fenêtres modales peuvent éventuellement être appelées au cours de la première utilisation du logiciel afin de définir des préférences utilisateur. Ces fenêtres sont toujours quittées comme je l'ai déjà précisé avecNomFenetre.close.
Merci en tout cas de te pencher une fois de plus sur ce problème...
 
sous macos tes fenetres sont le main thread (ca suce grave) si tu ne donnes aucune chance au thread de runner quand il faut tu obtients ton resultat il y a quelque chose qui tourne forvever
 
Merci tatouille... Si je comprends bien, celà veut dire que l'utilisation de fenêtres utilise trop de ressources. Si je mets mon code dans l'application avec un menu bar tu penses que çà sera plus rapide et que j'ai plus de chance d'arriver à quitter l'application ?
Merci encore et Joyeux Noël
 
Bonjour,

Merci encore Mac-Jac, mais malheureusement, cette fois-ci, j'avais déjà cherché dans les mêmes
Concernant les events, je n'ai aucun code dans l'application, mais tout est dans la fenêtre principale, et dans les fenêtres modales.... Est-ce que le problème peut venir de là ?
Que l'application n'ait pas de menubar ou de code dans les events de l'application, ne pause pas de problème.


J'ai effectivement pas mal utilisé le débogueur depuis quelques jours... D'ailleurs je le trouve un peu moins pratique que celui de VB ! Et en particulier, j'ai pu constater que la ligne "Quit" est bien executée, mais que l'application reste ouverte.
Dans le débogueur, lorsque tu clic sur le bouton "Pas à pas" il ne va pas ailleurs que sur la ligne Quit ?


J'ai lu dans ce sujet une personne avec le même problème que toi (l'application qui reste ouverte, sans erreur).
Il utilisait des méthodes obsolètes : (OpenAsPicture, New Picture).
Si tu utilises des méthodes obsolètes, essaie de les remplacer par les méthodes actuelles.
 
Dans le débogueur, lorsque tu clic sur le bouton "Pas à pas" il ne va pas ailleurs que sur la ligne Quit ?

Non il passe sur quit en émettant un beep, puis il va sur le "End sub" et terminé (en apparence seulement)

J'ai lu dans ce sujet une personne avec le même problème que toi (l'application qui reste ouverte, sans erreur).
Il utilisait des méthodes obsolètes : (OpenAsPicture, New Picture).
Si tu utilises des méthodes obsolètes, essaie de les remplacer par les méthodes actuelles.

Excellente idée, je suis allée également sur le support realsoftware mais je n'avais pas vu ce sujet (il y en a tellement !). Je n'utilise pas de picture mais je vais tout de même vérifier toutes les méthodes utilisées, s'il n'y en a pas d'obsolètes... ;)