Salut a tous.

Voila, je bosses actuellement sur une application utilisé en réseaux. Le probleme est qu'elle n'a pas été tout a fait prévu pour donc il faut l'adapter pour gérer les droits et les locks.

Je suis en ce moment en train de m'occuper de la partie déconnexion de l'utilisateur. La liste des utilisateurs connectés se trouvent dans un dossier réseaux, donc pour le déconnecté, il suffit de retirer son no mde ce fichier.

Jusque la pas de probleme.

Mais pour lire le fichier régulièrement, j'ai ouvert un second Thread dans l'app qui lit toute les 20s le fichier pour vérifier que l'utilisateur est toujours connecté. Mon porbleme, c'est que lorsque l'utilisateur est déconnecté, j'essaie de fermer l'application et la j'ai le droit a un magnifique Unhandled expression.

Voici le code de mon petit thread

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
 
//Fonction permettant de vérifier si l'on est toujours connecté
 
UINT CEdtGeneral::ThreadFunc(LPVOID pvParam)
{
	CString sUserName=G::GetUserName();
 
	while(1){
 
		//Vérifie toutes les 20s que l'utilisateur n'a pas été déconnecté
		if (Net_UtilEstConnecte(sUserName)==0){
			AfxMessageBox("Vous avez été déconnecté par un administrateur.\n Veuillez quitter l'application.");
			break;
		}
 
		Sleep(20000);
	}
	//On supprime la tache du salarié en cours
	G_NetTacheGest.DeleteTacheEnCoursUser();
	//Ferme l'application. L'utilisateur devra alors se reconnecter et les droits seront ok
	((CMainFrame*)AfxGetMainWnd())->OnClose(true);
	//SendMessage(0);
	return 0 ;
}
A savoir que ((CMainFrame*)AfxGetMainWnd())->OnClose(true); fait apelle a ma fenetre principale et utilise donc la maniere classique de quitter l'application.
A mon avis le probleme vient du fait que lorsque je fermes comme cela, le thread n'est pas ou mal fermé et pose probleme.

Merci d'avance