Bonjour,
Voilà, j'ai un exécutable P1 et un exécutable P2 chargeant une DLL.
Je souhaite indiquer à la DLL qu'elle doit se décharger. Pour ce faire, je crée un Mutex dans P1.
Régulièrement, le code de la DLL chargée par P2 vérifie l'existence du Mutex créé par P1. Si le Mutex existe, la DLL se décharge de P2.
Dans P1:
Dans la DLL de P2, à intervalle régulier:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 vh_Mutex := CreateMutex(nil, True, MutexStopDll);
Et bien ce code ne fonctionne pas. J'utilise les Mutex depuis 10 ans, et la nada. La seule particularité est que le code essayant qui tente la création du Mutex est dans une DLL, et qu'elle y parvient alors que P1 a déjà créé le Mutex. Je n'y comprends absolument rien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 vh_Mutex := CreateMutex(nil, True, MutexStopDll); if vh_Mutex = 0 then Begin trace(gc_process + MutexStopDll, 'Mutex ' + MutexStopDll + ' pas créé => Running'); gl_quit := True; End else begin trace(gc_process + MutexStopDll, 'Mutex ' + MutexStopDll + ' créé => PAS Running'); CloseHandle(vh_Mutex); end;
Une idée ?
Partager