2011-05-06 4 views
0

J'ai écrit un fichier EXE ActiveX qui lit les données d'un socket et met à jour la base de données. Quand je crée plusieurs threads (je suis en train de tester avec 5 à présent) du client, ActiveX exe prend 100% de l'utilisation CPU. Parfois tous les threads commencent mais aucun ne finira. J'utilise des événements dans ActiveX exe.Fil ActiveX Utilisation élevée du processeur

Le exe ActiveX n'a ​​que deux tâches

a.Read from socket 
b.update database. 

La taille de exe ActiveX est d'environ 55 Ko.

Où est-ce que je me trompe?

Veuillez nous suggérer.

+0

Avez-vous débogué et/ou le profilé .exe pour savoir où il est passé, il est temps? Je compterai sur une boucle étroite quelque part dans votre code qui vérifie constamment si des données sont disponibles sur le socket - ce qui conduirait à une utilisation élevée du processeur. –

+0

@ Will, y a-t-il un outil de profilage disponible pour VB6? – ramu

+0

J'ai à peine touché VB6 pour être honnête, donc je ne suis pas sûr - je m'attendrais à ce qu'il y ait de tels outils, bien sûr. Si vous lancez votre application dans le débogueur et y pénétrez de temps en temps, vous devriez avoir une bonne idée de l'endroit où va la majorité du temps CPU. –

Répondre

0

Si les deux lignes de code affiché ci-dessus chute dans une boucle (pour/Do While/Loop While) puis assurez-vous d'inclure

DoEvents 

pour permettre au programme de gestion des événements (comme les clics de souris, clavier, formulaire redimensionner et minimiser, etc.) pendant qu'il est occupé à traiter le reste du code.

a.Read from socket 
DoEvents 
b.update database 
Questions connexes