Dans le Closed de la fiche je fais un Dispose() de celle-ci. (Est-ce
bien ou pas bien, merci de me dire).
Sur un autre bouton, je voudrais télécharger via un WebService une maj
éventuelle de ma DLL et donc remplacer l'existante.
Quand j'ai téléchargé ma nouvelle DLL et que je veux donc supprimer
l'ancienne, j'ai une exception IOException comme quoi ma DLL est
occupée :Z.
Par sécurité, je lance un GC.Collect() avant l'appel du WebService, me
disant qu'il va peut-être libérer ma DLL mais non :(
Le plus bizarre, c'est que depuis l'explorateur, je suis capable de la
supprimer. Par contre même en la remplacant par la nouvelle, il doit me
garder une référence quelque part dans sa mémoire, car il me relance
toujours la 1°.
Ou est-ce que je pêche ?
Merci
--
Greg
A quoi sert de réussir sa vie ? Ce qu'il faudrait, c'est rater sa mort.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Eric Vernié [MS]
Bonjour Gregory ,
la seul possibilité de décharger une DLL en mémoire avec .NET, c'est de décharger le domaine dans lequel elle a été chargée. Je m'explique. Lorsque ton application se lance, un domaine par défaut est crée et seul lorsque ce domaine est déchargé (donc lorsque l'application est arrêtée) , les DLLs (Assemblies) sont déchargées. Si tu souhaites décharger des DLLs il te faut donc les charger dans un autre Domaine que celui par défaut.
Un bout d'exemple ici. How to: Load and Unload Assemblies (C# Programming Guide) http://msdn2.microsoft.com/en-us/library/ms173101.aspx
Cordialement
Eric Vernié Microsoft France
PS: Ca marche avec le Framework .NET, il te faut donc essayer avec le Compact Framework
"Grégory Davin" wrote in message news:
Bonjour,
Je travaille sur le dév de soft pour Pocket PC. Je suis en train de regarder le fonctionnement des DLL.
Aucun problème pour le chargement, c'est un vrai bonheur : ajout de la référence et une ligne de code !
Par contre ma DLL reste chargé en mémoire une fois que j'ai fermé ma fenêtre. Je voudrais libérer la mémoire. Comment puis-je faire ?
Dans le Closed de la fiche je fais un Dispose() de celle-ci. (Est-ce bien ou pas bien, merci de me dire).
Sur un autre bouton, je voudrais télécharger via un WebService une maj éventuelle de ma DLL et donc remplacer l'existante.
Quand j'ai téléchargé ma nouvelle DLL et que je veux donc supprimer l'ancienne, j'ai une exception IOException comme quoi ma DLL est occupée :Z.
Par sécurité, je lance un GC.Collect() avant l'appel du WebService, me disant qu'il va peut-être libérer ma DLL mais non :(
Le plus bizarre, c'est que depuis l'explorateur, je suis capable de la supprimer. Par contre même en la remplacant par la nouvelle, il doit me garder une référence quelque part dans sa mémoire, car il me relance toujours la 1°.
Ou est-ce que je pêche ? Merci
-- Greg
A quoi sert de réussir sa vie ? Ce qu'il faudrait, c'est rater sa mort.
Jean Yanne
Bonjour Gregory ,
la seul possibilité de décharger une DLL en mémoire avec .NET, c'est de
décharger le domaine dans lequel elle a été chargée.
Je m'explique. Lorsque ton application se lance, un domaine par défaut est
crée et seul lorsque ce domaine est déchargé (donc lorsque l'application est
arrêtée) , les DLLs (Assemblies) sont déchargées.
Si tu souhaites décharger des DLLs il te faut donc les charger dans un autre
Domaine que celui par défaut.
Un bout d'exemple ici.
How to: Load and Unload Assemblies (C# Programming Guide)
http://msdn2.microsoft.com/en-us/library/ms173101.aspx
Cordialement
Eric Vernié
Microsoft France
PS:
Ca marche avec le Framework .NET, il te faut donc essayer avec le Compact
Framework
"Grégory Davin" <gregdavin@hotmail.com> wrote in message
news:mn.8a967d62218e2b75.37835@hotmail.com...
Bonjour,
Je travaille sur le dév de soft pour Pocket PC.
Je suis en train de regarder le fonctionnement des DLL.
Aucun problème pour le chargement, c'est un vrai bonheur : ajout de la
référence et une ligne de code !
Par contre ma DLL reste chargé en mémoire une fois que j'ai fermé ma
fenêtre. Je voudrais libérer la mémoire. Comment puis-je faire ?
Dans le Closed de la fiche je fais un Dispose() de celle-ci. (Est-ce bien
ou pas bien, merci de me dire).
Sur un autre bouton, je voudrais télécharger via un WebService une maj
éventuelle de ma DLL et donc remplacer l'existante.
Quand j'ai téléchargé ma nouvelle DLL et que je veux donc supprimer
l'ancienne, j'ai une exception IOException comme quoi ma DLL est occupée
:Z.
Par sécurité, je lance un GC.Collect() avant l'appel du WebService, me
disant qu'il va peut-être libérer ma DLL mais non :(
Le plus bizarre, c'est que depuis l'explorateur, je suis capable de la
supprimer. Par contre même en la remplacant par la nouvelle, il doit me
garder une référence quelque part dans sa mémoire, car il me relance
toujours la 1°.
Ou est-ce que je pêche ?
Merci
--
Greg
A quoi sert de réussir sa vie ? Ce qu'il faudrait, c'est rater sa mort.
la seul possibilité de décharger une DLL en mémoire avec .NET, c'est de décharger le domaine dans lequel elle a été chargée. Je m'explique. Lorsque ton application se lance, un domaine par défaut est crée et seul lorsque ce domaine est déchargé (donc lorsque l'application est arrêtée) , les DLLs (Assemblies) sont déchargées. Si tu souhaites décharger des DLLs il te faut donc les charger dans un autre Domaine que celui par défaut.
Un bout d'exemple ici. How to: Load and Unload Assemblies (C# Programming Guide) http://msdn2.microsoft.com/en-us/library/ms173101.aspx
Cordialement
Eric Vernié Microsoft France
PS: Ca marche avec le Framework .NET, il te faut donc essayer avec le Compact Framework
"Grégory Davin" wrote in message news:
Bonjour,
Je travaille sur le dév de soft pour Pocket PC. Je suis en train de regarder le fonctionnement des DLL.
Aucun problème pour le chargement, c'est un vrai bonheur : ajout de la référence et une ligne de code !
Par contre ma DLL reste chargé en mémoire une fois que j'ai fermé ma fenêtre. Je voudrais libérer la mémoire. Comment puis-je faire ?
Dans le Closed de la fiche je fais un Dispose() de celle-ci. (Est-ce bien ou pas bien, merci de me dire).
Sur un autre bouton, je voudrais télécharger via un WebService une maj éventuelle de ma DLL et donc remplacer l'existante.
Quand j'ai téléchargé ma nouvelle DLL et que je veux donc supprimer l'ancienne, j'ai une exception IOException comme quoi ma DLL est occupée :Z.
Par sécurité, je lance un GC.Collect() avant l'appel du WebService, me disant qu'il va peut-être libérer ma DLL mais non :(
Le plus bizarre, c'est que depuis l'explorateur, je suis capable de la supprimer. Par contre même en la remplacant par la nouvelle, il doit me garder une référence quelque part dans sa mémoire, car il me relance toujours la 1°.
Ou est-ce que je pêche ? Merci
-- Greg
A quoi sert de réussir sa vie ? Ce qu'il faudrait, c'est rater sa mort.