OVH Cloud OVH Cloud

Mettre fin à une application C# sur Pocket PC

2 réponses
Avatar
Stéphane ANDRE
Bonjour,
quelle est la m=E9thode =E0 appeller pour mettre fin =E0 une=20
application C# Pocket PC ?
Doit-on lib=E9rer toutes les ressources avant ou est-ce=20
automatique ?

Merci d'avance

2 réponses

Avatar
De Simone Alessandro
Stéphane ANDRE a écrit :
Bonjour,
quelle est la méthode à appeller pour mettre fin à une
application C# Pocket PC ?
Doit-on libérer toutes les ressources avant ou est-ce
automatique ?

Merci d'avance



De la même manière que sur un pc normal :-)
Tu dois mettre fin à la fonction main.
Si tu utilises des fenêtres, tu as Application.run(...) qui démarre une
boucle de gestions des messages. Pour arrêter cette fonction tu peux
faire appel à Application.Exit();


Alors pour ce qui est des ressources c'est un peu plus compliqué.
Quand un programme quitte, les ressources sont récupérées. Le problème
est que certaines ressources ont des finalizers. Ces finalizers
permettent de faire des opérations supplémentaires lorsque l’objet est
récupéré (comme libérer des ressources).
Il n’est pas garanti que ces finalizers soit appelés.

En effet lors de la fermeture de ton programme :

- il reste des objets que tu peux atteindre.
Par exemple si un objet est encore référencé depuis un autre thread ...
Ou que l'objet a été justement créé lors de la fermeture du programme.

Pour ces variables, comme elles sont encore joignables, le garbage
collector ne les prend pas en compte et donc n'appelle pas le finalizer

- il reste des objets non référencés.
En effet, ce n'est pas parce qu'un objet est non référencé qu'il sera
directement détruit par le garbage collector.
Et pour ces objets qui n'ont pas encore été libérés par le garbage
collector, eux non plus ne verront jamais leur finalizer être exécuté.


Donc tu dois bien faire attention à appeler dispose/close sur les objets
concernés.
Quand tu appelles Application.Exit(); toutes les fenêtres se ferment et
donc les fonctions dispose() sont appelées sur tous tes contrôles.

Pour plus d’information voir l’article sur le GC :
http://msdn.microsoft.com/msdnmag/issues/1100/gci/


Bonne soirée :-)

--
Alessandro De Simone
email : (remove ".IHATESPAM")

Win32
Avatar
Stéphane ANDRE
Merci beaucoup Alessandro pour ces informations.
Je trouve le forum C# très réactif !

-----Message d'origine-----
Stéphane ANDRE a écrit :
Bonjour,
quelle est la méthode à appeller pour mettre fin à une
application C# Pocket PC ?
Doit-on libérer toutes les ressources avant ou est-ce
automatique ?

Merci d'avance



De la même manière que sur un pc normal :-)
Tu dois mettre fin à la fonction main.
Si tu utilises des fenêtres, tu as Application.run(...)


qui démarre une
boucle de gestions des messages. Pour arrêter cette


fonction tu peux
faire appel à Application.Exit();


Alors pour ce qui est des ressources c'est un peu plus


compliqué.
Quand un programme quitte, les ressources sont


récupérées. Le problème
est que certaines ressources ont des finalizers. Ces


finalizers
permettent de faire des opérations supplémentaires


lorsque l'objet est
récupéré (comme libérer des ressources).
Il n'est pas garanti que ces finalizers soit appelés.

En effet lors de la fermeture de ton programme :

- il reste des objets que tu peux atteindre.
Par exemple si un objet est encore référencé depuis un


autre thread ...
Ou que l'objet a été justement créé lors de la fermeture


du programme.

Pour ces variables, comme elles sont encore joignables,


le garbage
collector ne les prend pas en compte et donc n'appelle


pas le finalizer

- il reste des objets non référencés.
En effet, ce n'est pas parce qu'un objet est non


référencé qu'il sera
directement détruit par le garbage collector.
Et pour ces objets qui n'ont pas encore été libérés par


le garbage
collector, eux non plus ne verront jamais leur finalizer


être exécuté.


Donc tu dois bien faire attention à appeler


dispose/close sur les objets
concernés.
Quand tu appelles Application.Exit(); toutes les


fenêtres se ferment et
donc les fonctions dispose() sont appelées sur tous tes


contrôles.

Pour plus d'information voir l'article sur le GC :
http://msdn.microsoft.com/msdnmag/issues/1100/gci/


Bonne soirée :-)

--
Alessandro De Simone
email :


(remove ".IHATESPAM")

Win32
.