PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2025 → Problème sur THREAD et Socket
Problème sur THREAD et Socket
Iniciado por a.bussi, set., 29 2004 6:06 PM - 7 respostas
Publicado em setembro, 29 2004 - 6:06 PM
Bonjour.

Sur une application j'utilise un THREAD pour la reception sur Un SOCKET.

la connexion est sur un serveur pas en Windev

Au bout d'une 20ainne d'Heure de communication un message d'erreur apparait

Titre de la fenettre d'erreur: Microsift Visual C++
Texte de l'eureur :: Appel Fonction Virtuelle Pure


Je suppose donc que le Thread de reception ne doit plus existé et sont appel tombe dans le vide.

Je vous donne lmes 1er lignes de la routines de reception des SOCKEt par THREAD
et le code de la fonction d'envoie sur les SOCKET appeler par les divers traitement de la fentre prioncipale de l'application

---------------------------

LE THREAD


PROCEDURE Reception()

sMessage est une chaîne
crexe est un entier // compte rendue d'execution
checkcnx est un entier
BOUCLE
// Attente et lecture du prochain message
QUAND EXCEPTION DANS
SémaphoreDébut("waitsocket")
sMessage = SocketLit(csNomSocket,Faux,500)
SémaphoreFin("waitsocket")
FAIRE
Erreur("Problème détecté sur la socket de réception",ExceptionInfo())
SORTIR
FIN
---------------------------------------------------
L'Emission

PROCEDURE SendSocket(cmd est une chaîne,data1 est une chaîne ="",data2 est une chaîne="")

SémaphoreDébut("waitsocket")
SI SocketEcrit(csNomSocket, cmd+TAB+data1+TAB+data2+TAB) = Vrai ALORS
SémaphoreFin("waitsocket")
RENVOYER Vrai
SINON
SémaphoreFin("waitsocket")
RENVOYER Faux
FIN


SI quelqun a des conseilles ou une idé sur cette erreur

PS : le suport ne peut réponde a mon PB sans que je n'envoy l'aplication. mais pour faire fonctionné l'application il y a 13 MO compacté a envoyer ce qui ne passe pas dans les 9 max.

Mon pb c'est que je doit livré le 30 septembre je n'ai donc pas le temps d'envoyer un CDROM et d'attendre la réponsse.

Donc toute sucjestion rappide est la bien venue

Merci

A.BUSSI URBACO
Publicado em setembro, 29 2004 - 7:34 PM
tu pourrais préciser si le planton est en emmission iu en récéption ?

A+
Adrien.
Publicado em setembro, 29 2004 - 9:15 PM
Alain Bussi vient de nous annoncer :

Je suppose donc que le Thread de reception ne doit plus existé et sont
appel tombe dans le vide.


Tu peux pas tester son existence avec threadetat (threadinnexistant)???
Et le relancer s'il n'existe pas?
Publicado em setembro, 30 2004 - 12:01 PM
C'est quoi le "planton" ??
Le THREAD ser de reception

et divrsse fonction de la fêntre principale envoie avec gestion d'un sémaphore pour ne pas être a 2 sur la socket en même temps....
Publicado em setembro, 30 2004 - 12:06 PM
Tu peux pas tester son existence avec threadetat (threadinnexistant)???
Et le relancer s'il n'existe pas?



En fait il ne sert que a recevoir en permanence des info sur la socket il n'envoie rien.

et je pennse que c'est pas a moi de vérifier si un THREAD est mort il n'y a pas de raison que le noyeau Windev le ferme sans ma permision donc il devrait toujour existé...

la question est ne seraisse pas un THREAD en C++ de windev associé au mien en WDLangage qui aurait planté ???
Publicado em novembro, 24 2005 - 1:03 PM
j'ai exactement le même problème que vous, essayez d'enlever l'hyperthreading du processeur ou d'alller dans la faq de PCsoft, il y a une manipulation à faire

courage

eric
Publicado em novembro, 24 2005 - 3:35 PM
Salut,

J'avais posté cette info dans le forum "Hors sujet" mais finalement,
c'est pas du tout hors sujet.

ZDnet.fr annonce dans ses news "Censée doper les performances des
puces qui effectuent des traitements multitâches, la technologie
d'Intel ne semble pas tenir toutes ses promesses. Certains
utilisateurs déplorent même des ralentissements, notamment avec SQL
Server."

Info ou intox ? A chacun de se faire son avis.

La suite est à lire sur la page suivante :

http://www.zdnet.fr/actualites/informatique/0,39040745,39289582,00.htm

--
Ciao
Pat Biker

http://aaa.windev.free.fr/On Thu, 24 Nov 2005 12:03:36 +0100, "Eric
truffet" <eric.truffet@factmanage.com> wrote:


j'ai exactement le même problème que vous, essayez d'enlever l'hyperthreading du processeur ou d'alller dans la faq de PCsoft, il y a une manipulation à faire

courage

eric
Publicado em março, 09 2007 - 12:51 PM
La SOLUTION au problème NE PAS UTILISER de THREAD !

en effet j'ai utilisé un timer ça marche sans problème !

le problème est que même avec des sémaphore pour que la fennetre hote du THREAD n'utilise pas les objet ou variable mise ajour par THREAD en interne l'interpréteur WD les utilise lui !
Donc au vue des nouvelles explications apparu dans WD11 il est vrai q'uil ne faut pas qu'un THREAD utilise un seul objet de la fenetre ni de variable utilisé en dhors de THREAD.
IL FAUT PASSER PAR LEs EVENEMENT Windows sendmessage et récupéré les doné via ce tunel, ce qui dans la plupart des cas et tres contraigniant !