OVH Cloud OVH Cloud

Fermeture de formulaire

5 réponses
Avatar
Laurent Gauthier
J'ai crée une appli sous VS2003 avec C#. Elle tourne très bien. Par contre
lorsque qu'un autre programme devient actif, je reçois assez rapidement des
évènements closing sur mon formulaire. Visiblement on cherche à fermer mon
appli. D'une pourquoi ? et de deux, comment l'interdire de fermer mon appli
car cela me pose problème ?

D'avance merci.
--
Pocket PC Qtek 2020, VS2003, GPS Bluetooth

5 réponses

Avatar
Alain Zanchetta [MS]
C'est le principe normal de gestion de la mémoire sur Pocket PC :
l'idée étant de laisser tourner les programmes tant qu'on n'a pas besoin de
mémoire ; c'est pour cela que les règles de programmation sous Pocket PC
demandent qu'on fasse de l'auto-save.

Alain

"Laurent Gauthier" wrote in
message news:
J'ai crée une appli sous VS2003 avec C#. Elle tourne très bien. Par contre
lorsque qu'un autre programme devient actif, je reçois assez rapidement
des
évènements closing sur mon formulaire. Visiblement on cherche à fermer mon
appli. D'une pourquoi ? et de deux, comment l'interdire de fermer mon
appli
car cela me pose problème ?

D'avance merci.
--
Pocket PC Qtek 2020, VS2003, GPS Bluetooth


Avatar
Laurent Gauthier
Bonjour,

Pour faire suite à votre article, je reviens vers vous pour quelques
précisions !

En fait j'ai développé une appli de gestion d'emploi du temps et qui donne
aussi la possibilité de naviguer avec Tomtom quand on appuie sur un des
boutons du pocket. Donc je suis obligé de garder mon appli et Tomtom ouverts
tous les deux.

Lorsque Tomtom est actif au premier plan, l'OS tente de fermer mon appli.
J'annule en faisant un cancel sur l'évènement closing de mon formulaire mais
je suis incapable par la suite d'instancier des nouveaux objets car mon appli
me retourne une exception "outofmemoryexception" !

Que puis-je faire pour m'en sortir à ce niveau ? Et qu'entendez-vous par
faire de l'Auto-Save ?

D'avance merci.

"Alain Zanchetta [MS]" wrote:

C'est le principe normal de gestion de la mémoire sur Pocket PC :
l'idée étant de laisser tourner les programmes tant qu'on n'a pas besoin de
mémoire ; c'est pour cela que les règles de programmation sous Pocket PC
demandent qu'on fasse de l'auto-save.

Alain

"Laurent Gauthier" wrote in
message news:
J'ai crée une appli sous VS2003 avec C#. Elle tourne très bien. Par contre
lorsque qu'un autre programme devient actif, je reçois assez rapidement
des
évènements closing sur mon formulaire. Visiblement on cherche à fermer mon
appli. D'une pourquoi ? et de deux, comment l'interdire de fermer mon
appli
car cela me pose problème ?

D'avance merci.
--
Pocket PC Qtek 2020, VS2003, GPS Bluetooth







Avatar
Alain Zanchetta [MS]
Bonjour,

Lorsque Tomtom est actif au premier plan, l'OS tente de fermer mon appli.
J'annule en faisant un cancel sur l'évènement closing de mon formulaire
mais
je suis incapable par la suite d'instancier des nouveaux objets car mon
appli
me retourne une exception "outofmemoryexception" !


Ca n'est finalement pas très étonnant car c'est bien un manque de mémoire
qui va inciter Windows Mobile à demander la fermeture de l'application.

Que puis-je faire pour m'en sortir à ce niveau ? Et qu'entendez-vous par
faire de l'Auto-Save ?
C'est de sauvegarder le travail en cours et d'accepter la fermeture de

l'application. A la relance, vous pourriez alors recharger l'état
sauvegardé.

Cela dit, si votre application a réellement besoin de fonctionner *en même
temps* que TOMTOM, accepter la fermeture n'est peut être pas une solution...

Est-ce que vous avez essayé de mesurer à partir de quand vous recevez le
message de fermeture ?
=> essayez de fermer les autres applications avant de lancer la votre
=> augmentez la mémoire allouée pour les programmes en cours d'exécution
Et regardez si vous avez toujours le même problème => essayez de déterminer
ainsi la quantité de mémoire nécessaire pour cohabiter pacifiquement avec
tomtom.

Alain

Avatar
Laurent Gauthier
Merci pour votre réponse.

J'ai déjà fait un test pour augmenter la mémoire sur mon pocket. J'arrive à
me dégager environ 75 à 80 Mo libres pour les programmes ! Ce qui me semble
beaucoup quand même. Rien y fait.

Le délai avant le closing est entre 15 et 30 secondes à peu près !

Est-on capable d'outrepasser le outofmemoryexception, car j'ai fait le test
de fermer tomtom, donc normalement la mémoire est libérée et bien je ne sors
pas de mon exception... ?





"Alain Zanchetta [MS]" wrote:

Bonjour,

Lorsque Tomtom est actif au premier plan, l'OS tente de fermer mon appli.
J'annule en faisant un cancel sur l'évènement closing de mon formulaire
mais
je suis incapable par la suite d'instancier des nouveaux objets car mon
appli
me retourne une exception "outofmemoryexception" !


Ca n'est finalement pas très étonnant car c'est bien un manque de mémoire
qui va inciter Windows Mobile à demander la fermeture de l'application.

Que puis-je faire pour m'en sortir à ce niveau ? Et qu'entendez-vous par
faire de l'Auto-Save ?
C'est de sauvegarder le travail en cours et d'accepter la fermeture de

l'application. A la relance, vous pourriez alors recharger l'état
sauvegardé.

Cela dit, si votre application a réellement besoin de fonctionner *en même
temps* que TOMTOM, accepter la fermeture n'est peut être pas une solution...

Est-ce que vous avez essayé de mesurer à partir de quand vous recevez le
message de fermeture ?
=> essayez de fermer les autres applications avant de lancer la votre
=> augmentez la mémoire allouée pour les programmes en cours d'exécution
Et regardez si vous avez toujours le même problème => essayez de déterminer
ainsi la quantité de mémoire nécessaire pour cohabiter pacifiquement avec
tomtom.

Alain






Avatar
Alain Zanchetta [MS]
Bonjour,

J'ai déjà fait un test pour augmenter la mémoire sur mon pocket. J'arrive
à
me dégager environ 75 à 80 Mo libres pour les programmes ! Ce qui me
semble
beaucoup quand même. Rien y fait.


C'est énorme et théoriquement très largement suffisant... on va s'orienter
vers une autre piste : en effet, contrairement aux programmes sous Windows
qui disposent généralement de plus d'espace d'adressage que de mémoire
physique, sous Windows Mobile la situation est parfois inverse.
En gros, mis à part des mécanismes comme des fichiers mappé en mémoire, un
processus n'utilisera jamais plus de 32 Mo de RAM à cause de l'organisation
de la mémoire => 75 à 80 Mo libres devraient être toujours suffisants pour
faire tourner deux programmes.

Là où on peut avoir des problèmes, c'est si ces deux programmes chargent
tous les deux des grosses DLLs (en dehors des DLLs systèmes s'exécutant à
partir de la ROM) car l'espace occupé par une DLL chargée dans un processus
ne peut pas être utilisé pour charger une autre DLL dans un autre processus
; il peut servir à stocker des données mais pas du code.
Sur certaines machines en WM 2003 SE, les constructeurs chargent plein
d'outils systèmes et drivers complémentaires dans la RAM et chargent un peu
trop la barque, ce qui pose des problèmes à certains programmes...
Donc, question à 100 balles : est-ce que vous utilisez beaucoup de DLLs ? si
oui, est-il envisageable d'incorporer leur code dans l'exécutable (en les
compilants sous forme de LIBs statiques) ?

Alain