# real studio fermeture application



## CathyGYM (22 Décembre 2010)

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 ? 
Merci d'avance...


----------



## Anonyme (22 Décembre 2010)

Bonjour,


```
Quit
```
Ce code suffit pour quitter l'application, tu n'as pas besoin de fermer la fenêtre active par 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


----------



## CathyGYM (22 Décembre 2010)

Mac_Jac a dit:


> ```
> 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é       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 

Merci quand même...


----------



## CathyGYM (22 Décembre 2010)

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 :

```
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...


----------



## Anonyme (23 Décembre 2010)

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.


----------



## tatouille (23 Décembre 2010)

Mac_Jac a dit:


> Bonjour,
> 
> Les  lignes de code après la  ligne *Quit* ne seront jamais lues.
> 
> ...



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


----------



## CathyGYM (23 Décembre 2010)

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  , 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 , 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é avec_NomFenetre.close_.
Merci en tout cas de te pencher une fois de plus sur ce problème...


----------



## tatouille (24 Décembre 2010)

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


----------



## CathyGYM (24 Décembre 2010)

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


----------



## Anonyme (26 Décembre 2010)

Bonjour,



CathyGYM a dit:


> 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.




CathyGYM a dit:


> 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.


----------



## CathyGYM (27 Décembre 2010)

> 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...


----------

