begin process at 2010 03 17 07:38:28
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

AfxBeginThread ne repond pas


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

AfxBeginThread ne repond pas

mercredi 19 janvier 2005 à 10:10:07 | AfxBeginThread ne repond pas

ptitmanu

Bonjour,
J'ai un petit soucis avec AfxBeginThread.... l'appel de la methode ne retourne jamais.
Je ne fais rien de spécial pourtant, je declare un objet CWinThread et je lui associe la valuer de retour de la méthode AfxBeginThread, mais celle ci ne rend jamais la main. Quelqu'un aurais une idée sur l'origine possible du probleme ? Je ne trouve nul part des references à ce genre de probleme. Si vous avez des pistes à me suggerer, je suis preneur.
Merci.
Emmanuel.
ps: le code utilisé est vraiment tout simple:
UINT Vme2AvsThread(LPVOID thisPointer);
void VmeDlsDll::startVmeDlsPolling(void)
{
CWinThread * m_Vme2AvsThread = AfxBeginThread( Vme2AvsThread,
this ,
THREAD_PRIORITY_HIGHEST,
0,
CREATE_SUSPENDED,
NULL );
  ResumeThread (m_Vme2AvsThread->m_hThread );
}

UINT Vme2AvsThread(LPVOID thisPointer)
{
VmeDlsDll* curVmeDls = (VmeDlsDll*) thisPointer;
//...//
return 0;
}
mercredi 19 janvier 2005 à 10:37:08 | Re : AfxBeginThread ne repond pas

ptitmanu

J'ai oublié de preciser que je demarre le Thread dans le constructeur d'une DLL. Je ne sais pas si cela a de l'importance ou non...
mercredi 19 janvier 2005 à 15:27:43 | Re : AfxBeginThread ne repond pas

bayeto

Membre Club

Utilise tu les fonctions d'attente (WaitForSingleObject) pour ton thread parent? Ca evite qu'il arrete prematurement ton thread enfant.

mercredi 19 janvier 2005 à 17:12:33 | Re : AfxBeginThread ne repond pas

ptitmanu

Salut,
Pour repondre à ta question, je n'utilise pas WaitForSingleObject. Je ne sais pas à quoi cela sert. Mais je pense que cela ne vient pas de là, puisque c'est le thread principal qui fige... ou du moins la methode AfxBeginThread qui ne retourne pas.
J'ai essayé plusieurs methode pour creer des threads et toutes figent lors de la création du thread lorsque la création se fait pendant le "DLL Attach Process" .... Par contre il n'y a aucun probleme lorsque je demarre le thread par la suite.
Est ce un comportement normal pour toi ?
Je vais voir avec WaitForSingleObject, mais je n'y crois pas...enfin n'ayant pas franchement les idées tres claires sur le mecanisme d'initialisation des DLL, je voir.
En tout cas merci.
mercredi 19 janvier 2005 à 17:27:52 | Re : AfxBeginThread ne repond pas

ymca2003

Réponse acceptée !
Regarde le bouquin de richter s'il dit quelque chose la dessus :
[ Lien ]
[ Lien ]

apparemnt il vaut mieux éviter de faire des appels à des fonctions situées dans d'autre dll dans dllmain (en particulier faire des appels  aux MFC) car toutes les dll n'ont pas forcément été chargée lors l'appel à ton dllmain.

page

"You must remember that DLLs use DllMain functions to initialize themselves. When your DllMain executes, other DLLs in the same address space probably haven't executed their DllMain functions yet. This means that they have not initialized, so you should avoid calling functions imported from other DLLs. In addition, you should avoid calls to LoadLibrary(Ex) and FreeLibrary from inside DllMain because these functions can create dependency loops.

The Platform SDK documentation states that your DllMain should perform only simple initialization such as setting up thread local storage (discussed in Chapter 21), creating kernel objects, and opening files. You must also avoid calls to User, Shell, ODBC, COM, RPC, and socket functions (or functions that call these functions) because their DLLs might not have initialized yet or the functions might call LoadLibrary(Ex) internally, again creating a dependency loop.

Also be aware that the same problems exist if you create global or static C++ objects because the constructor or destructor for these objects is called at the same time as your DllMain function".



Cette discussion est classée dans : repond, afxbeginthread, vme2avsthread, thispointer, vmedlsdll


Répondre à ce message

Sujets en rapport avec ce message

Lancer une thread intraclasse [ par rudyg ] Salut tout le monde,depuis une methode de classe, je souhaite lancer une thread faisant appel a une AUTRE methode de la meme classe.Ex:void kernel::La problème avec AfxBeginThread(...) [ par jujunio ] Bonjour,J'essaye de lancer des threads dans un programme MFC. Mais je ne comprend rien aux threads. Voci mon prog, est-ce qu'il manque quelquechose ?? qui n'est pas fort qu'en C/C++?????????????? [ par imanewin32 ] salut tout le mondeje dois envoyer des donées par le rs232 entre le pc et une machine industrielle, pour tester les commandes j'utilise l'hypertermina thread avec mfc [ par raf007 ] salut a tous ,donc comme l'indique le titre g un grand pb avec les thread en MFC :1-j'utilise AfxBeginThread mais la fonction que doit executer ce thr question sur les threads [ par mrous ] Bonjour,je dois réaliser une fonction pour communiquer avec un composant USB.Pour cela, je pense créer un thread en priorité haute en utilisant AfxBeg


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
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 : 0,530 sec (3)

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