begin process at 2012 05 30 01:45:56
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Problème d'arret de thread (MFC)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème d'arret de thread (MFC)

lundi 11 avril 2005 à 12:13:46 | Problème d'arret de thread (MFC)

swinteur

Me revoila! lol

Bon alors j'explique mon probleme.Lorsque mon serveur se lance, il crée un Thread qui gere la connexion.A la fin de l'execution de la thread je la relance ( je prefere cela a une boucle...est-ce mieux?).
Je lance ma thread avec AfxBeginThread(lors de l initalisation de la fenetre, puis a la fin de cette meme thread ou encore si je clik sur le bouton "relancer serveur").

Mon probleme est que j'aimerai arreter ma thread a n'importe quel moment de son execution...car j arrive a arreter la thread lorsque qu'elle tourne avec une boucle et que je la creer avec CreateThread...sinon non :(

je vous met le code au cas ou:
UINT Serveur(LPVOID param)
{
 CPCCommandeDlg *pObject = (CPCCommandeDlg*)param;
 int test = 1;
 CFile Fichier;
 CTransfert Transfert;
 DWORD TailleFichier;
 HANDLE Hwnd;
 CBitmap Rouge;
 CBitmap Vert;
 CBitmap Jaune;
 CStatic * CS;
 CStatic * CS1;
 CStatic * CS2;
 CStatic * CS3;
 Rouge.LoadBitmap(IDB_ROUGE);
 Vert.LoadBitmap(IDB_VERT);
 Jaune.LoadBitmap(IDB_JAUNE);
// HANDLE d_eventStop;
// DWORD Thread_TestID;

 //d_eventStop = CreateEvent(NULL, FALSE, FALSE, "event_StopTest");

 CS = (CStatic *)pObject -> GetDlgItem(IDC_Init);
 CS1 = (CStatic *)pObject -> GetDlgItem(IDC_ConnectClient);
 CS2 = (CStatic *)pObject -> GetDlgItem(IDC_ProbConnexion);
 CS3 = (CStatic *)pObject -> GetDlgItem(IDC_Attente);

// while( WaitForSingleObject(d_eventStop, D_TIME_OUT_TEST ) == WAIT_TIMEOUT )
// {
 CS->SetBitmap(HBITMAP(Rouge));
 CS1->SetBitmap(HBITMAP(Rouge)); 
 CS2->SetBitmap(HBITMAP(Rouge));
 CS3->SetBitmap(HBITMAP(Rouge));

 Sleep(1000);
 //Transfert.NameFileCString = "";
 test = Transfert.ConnexionModeServeur(param);
 if (test == 1 )//&& WaitForSingleObject(d_eventStop, D_TIME_OUT_TEST ) == WAIT_TIMEOUT)
 {
 // AfxMessageBox("La connexion a reussi");
  Transfert.RecevoirDonnee();
  Transfert.Serveur.~SocketProj();
  closesocket(Transfert.Serveur.sockTransfert);
  //AfxMessageBox(Transfert.NameFileCString);

  VERIFY(Fichier.Open(Transfert.NameFileCString , CFile::modeRead));
  Hwnd = CreateFile(Transfert.NameFileCString,0,0, NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
             //Creation du fichier ou ouverture
             //s'il existe déjà.

  TailleFichier = GetFileSize(Hwnd, NULL); //Recuperation de la taille du fichier
  CloseHandle(Hwnd); //Fermeture du handle
  Transfert.ConnexionModeClient();
  Transfert.EnvoyerTaille(TailleFichier);
  Transfert.Client.~SocketProj();
  //CreateThread(NULL, 0, &Serveur, pObject, NULL, &Thread_TestID);
 }
 else
 {
  CS->SetBitmap(HBITMAP(Rouge));
  CS1->SetBitmap(HBITMAP(Rouge)); 
  CS2->SetBitmap(HBITMAP(Rouge));
  CS3->SetBitmap(HBITMAP(Rouge));
  AfxMessageBox("La connexion a echoué");
 // CreateThread(NULL, 0, &Serveur, pObject, NULL, &Thread_TestID);
 }
// }

 AfxBeginThread (Serveur, pObject, THREAD_PRIORITY_LOWEST);
// CloseHandle( d_eventStop );
// d_eventStop = NULL;
 return(0);
}

a l initialisations a donne sa :

BOOL CPCCommandeDlg::OnInitDialog()
{
 CDialog::OnInitDialog();

 SetIcon(m_hIcon, TRUE);   // Set big icon
 SetIcon(m_hIcon, FALSE);  // Set small icon

 // TODO: Add extra initialization here
// d_eventStop = CreateEvent(NULL, FALSE, FALSE, "event_StopTest");
// CreateThread(NULL, 0, &Serveur, this,NULL, &Thread_TestID); 
 AfxBeginThread(Serveur,this, THREAD_PRIORITY_LOWEST );
 return TRUE;  // return TRUE  unless you set the focus to a control
}


(pour relancer le serveur avec le bouton "relancer serveur" je ne fais qu'un afxbeginthread(Serveur, this, THREAD_PRIORITY_LOWEST ))

voilà j'espere que le code n'est pas trop long :s...et j'espere que vous pourrez m'aider!!
Merci d'avance.



Cette discussion est classée dans : serveur, transfert, rouge, thread, pobject


Répondre à ce message

Sujets en rapport avec ce message

transfert FTP [ par Darkukai ] bonjour à tousje dois dévelloper un petit exe qui s'identifie et envoie un fichier sur un serveur ftp avec des paramètres rentrer par l'utilisateur (u Client - serveur C++ avec thread [ par nono_in_maribor ] Bonjour!!Voila, je previens tout de suite je ne suis pas un pro du c++. Mon probleme est le suivant : j'ai fait un client-serveur en c++ (sous devc++) transfert de fichier!!! [ par youpiyoyo ] je suis en galère ca fais depuis le debut de l'aprem ke je cherche a faire du transfert de fichier entre un serveur et un clientje m'embrouille avec l Sections Critiques [ par new0staff ] Bonjour!Dans une partie de mon programme, j'effectue des calculs sur variables en fonction d'une trame reçu par un serveur.c'est-à-dire que lors de la Jeu réseau [ par goutbouyo ] Salut,J'essaye de mettre une fonction réseau à mon jeu.Dans l'initialisation, j'ai mis un thread qui initialise soit un serveur ou soit un client.Ensu transfert de fichiers sous linux [ par lyas ] Salut,Je suis debutante en programation reseau et je voudrais transferer des fichiers via un serveur sous linux.j'ai reperé un programme posté par se Thread, Client/Serveur VC++.Net et avec WinForms ( pas d'MFC ) [ par lacousine ] Bonjour,j'ai développé un serveur qui accept plusieurs clients avec des sockets. Voici mes problèmes: lorsque je veux mettre fin à mon serveur et qu'i multithread [ par blueburry ] Bonjour, je suis en train de creer un serveur SMTP. Afin de permettre la connexion simultanee de plusieurs clients sur mon serveur, g créé un thread q Problème de GetDlgItem dans un thread [ par Nixeus ] Bonjour à tous !Je développe actuellement une petite appli MFC avec visual studio 6.J'ai créer un thread qui fonctionne très bien.Dans ce thread, j'ai transfert d'imge d'un serveur vers un client en C++(linux) [ par doberman7578 ] bonjour,n'aarivant pas a effectuer le transfert d'une image d'un serveur a un client en c++ , quelqu'un pouurait il maider a effectuer celamercia++


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 8,720 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales