Bonjour,

Je souhaite gérer l'ouverture d'un fenetre afin qu'elle ne puisse s'ouvrir deux fois.

Pour cela j'utilise un singleton qui permet de retourner une instance toujours unique.

Le problème est lors de la fermeture de cette fenêtre je ne parviens pas a remettre le pointeur vers la fenêtre a nullptr;

Pour cela j'ai tenté plusieurs solution :
La première était avec une référence du pointeur, mais ça n'as rien changé au problème.

J'ai donc tenté en deuxième temps de passer un pointeur vers le pointeur du singleton.

Cela donne ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
ui_newUser^ objSession::getNewUser()
{
	if(formUser == nullptr)
	{
		ui_newUser^ tmpPt = gcnew ui_newUser();
		objSession::killNewUser();
		tmpPt->definePt(&tmpPt);
		formUser = tmpPt;
	}
 
        return formUser;
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
void definePt(ui_newUser^* ptSingle)
{
	ptSingleton = ptSingle;
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
*ptSingleton = nullptr;
Le problème est que lors de la mise a nullprt de l'indirection de ptSingleton l'application plante et me donne le message suivant :

Une exception non gérée du type 'System.AccessViolationException' s'est produite dans Module inconnu.
Informations supplémentaires : Tentative de lecture ou d'écriture de mémoire protégée. Cela indique souvent qu'une autre mémoire est endommagée.
j'ai pensé que ça pouvais venir du fait que le pointeur de singleton est en privé, j'ai donc pour testé (même si ça fait perdre tout le sens du singleton) de mettre le pointeur en publique, le résultat est le même.

Si l'un de vous a une idée qui pourrait me sauver ça serait pas de refut.

Merci d'avance.