IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

Probleme fermeture Thread


Sujet :

MFC

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 92
    Points : 39
    Points
    39
    Par défaut Probleme fermeture Thread
    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

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Essaie AfxGetMainWnd()->DestroyWindow()

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 92
    Points : 39
    Points
    39
    Par défaut
    Ca ne marche pas mieux.

    Mais je me demandes si ca ne pourrait pas venir du fait que le thread secondaire ferme le thread principal. Ce qui pourrait ne pas marcher.

    Il n'y aurait pas un moyen pour faire communique les deux threads ensemble de maniere a ce que le thread secondaire disent au premier de se fermer ? J'avous que c'est la premiere fois que je me frotte au thread.
    Je ne serai pas en MFC j'aurai essayer avec un SendMessage qui aurait été récupéré par le thread principal, mais le je ne vois pas trop comment faire en MFC...

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    essaye:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ::PostMessage(AfxGetMainWnd()->m_hWnd,WM_CLOSE,0,0);

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juillet 2005
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 92
    Points : 39
    Points
    39
    Par défaut
    Magnifique

    Ca marche nickel.

    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme de threads et de pipes
    Par Marc san dans le forum C
    Réponses: 7
    Dernier message: 22/02/2006, 21h32
  2. Probleme de threads
    Par cryptorchild dans le forum Langage
    Réponses: 7
    Dernier message: 02/02/2006, 02h27
  3. Probleme fermeture fenetre
    Par lemagicien dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 22/12/2005, 14h40
  4. Problème de threads avec pthread_create
    Par 180degrés dans le forum Linux
    Réponses: 6
    Dernier message: 19/12/2005, 12h07
  5. [Kylix] Problème de thread
    Par moltov dans le forum EDI
    Réponses: 1
    Dernier message: 22/06/2005, 13h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo