Bonjour,
J'ai une programme de lancement A qui permet de lancer plusieurs applications différentes (1, 2 et 3). Seule une des applications peut être lancée à la fois.
Afin de pouvoir liberer la mémoire utile aux l'applications (1, 2 ou 3), j'ai créé un domaine d'application et j'exécute mon application dans ce nouveau domaine. De ce fait, une fois l'application fermée, je peux décharger mon domaine pour liberer la mémoire.
Mon code est le suivant :
Cependant, certaines applications provoquent une Exception CannotUnloadAppDomainException lors du déchargement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 // déclaration de variable appDomain private static AppDomain domaineApplis; ... // lancement d'une application // sApplication : chemin de l'application private void lancer(String sApplication) { ... // lancement de l'application maForm.domaineApplis = AppDomain.CreateDomain("APPLICATION", null); try { maForm_mesir.domaineApplis.ExecuteAssembly(sApplication+"/init.exe", null, param); this.Refresh(); } finally { // Déchargement du domaine d'application AppDomain.Unload(maForm.domaineApplis); } ... }
Je ne sais pas si ça à un rapport mais les applications qui provoquent cette exception utilisent des DLL communes à mon programme de lancement A.
Comment puis-je éviter cette exception ?
Merci d'avance
Partager