Problème avec les Threads et la fonction Creaobject
skirby
Messages postés96Date d'inscriptionvendredi 1 avril 2005StatutMembreDernière intervention26 juillet 2007
-
8 avril 2005 à 12:09
frank150
Messages postés34Date d'inscriptionlundi 6 janvier 2003StatutMembreDernière intervention29 mars 2008
-
12 janv. 2006 à 10:54
Bonjour à tous,
Voila, j'ai un gros problème avec les Thread sous VB 6.
Plus précisément, c'est la fonction CreateObject dans la fonction de mon thread qui pose problème.
Je m'explique :
Mon but et de créer un thread qui va instancier une dll via CreateObject (et son ProgID)
Au final, j'aimerais que mon programme puisse lancer plusieurs threads et instancier chacun une dll différente
Le code ci-dessous fonctionne dans l'environnement de VB. Mais une fois
l'exe compilé, ça plante à l'exécution sur la fonction CreateObject
Pour l'utiliser, il suffit de créer un projet et d'y insérer un
formulaire (avec un bouton cmdStartThread et cmdQuit) , un module et un
module de classe
Merci d'avance pour votre aide.
''''''''''''' Code du formulaire
Option Explicit
'API Declarations
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Declare Function CreateThread Lib "kernel32" (ByVal
lpThreadAttributes As Any, ByVal dwStackSize As Long, ByVal
lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As
Long, lpThreadID As Long) As Long
Private Declare Function TerminateThread Lib "kernel32" (ByVal hThread As Long, ByVal dwExitCode As Long) As Long
Private mThreadHandle As Long
Private mThreadID As Long
Private mCreated As Boolean
Public Function CreateNewThread(ByVal cFunction As Long, Optional ByVal
cPriority As Long 0, Optional ByVal cEnabled As Boolean True)
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 8 avril 2005 à 13:01
Un conseil, laisse tomber les threads avec VB6, il n'est pas prevu pour
faire du multithreading et ne sait pas le gérer (du tout, contrairement
à VB5 qui lui ne sais pas le gérer correctement).
Le multithreading en VB6 c'est plantage assuré
Le seul moyen (détourné) de faire un semblant de multithreading c'est de créer des ocx.
Eventuellement déporter le code et la gestion multithreading dans une dll écrite en C.
<hr size="2" width="100%">Si le cerveau était assez simple pour que nous puissions le comprendre,
nous serions assez bête pour ne pas le comprendre malgré tout.
frank150
Messages postés34Date d'inscriptionlundi 6 janvier 2003StatutMembreDernière intervention29 mars 2008 12 janv. 2006 à 10:54
C'est bizarre pcq jsuis en vb6 et jpeux faire tourner 1 thread en background (soit 2 threads total en comptant celui du prog principale) et sa plante pas du tout!! Je pense que le problème vient du fait que tu n'a pas compiler ton exe en P-Code (dans les options du projet -> Compile -> Compiler en mode P-Code).