Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

UN SIMPLE PROGRAMME MULTI-THREAD


Information sur la source

Catégorie :API Niveau : Initié Date de création : 05/01/2003 Date de mise à jour : 05/01/2003 21:40:01 Vu : 6 417

Note :
9,67 / 10 - par 6 personnes
9,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note

Description

On peut facilement créer une app. mutli-thread avec VB grace au VB !
Mais attention, c'est risqué ! (ça plante pour un rien)

A mettre dans un module et sub main en démarrage
 

Source

  • Public Const CTF_COINIT = &H8
  • Public Const CTF_INSIST = &H1
  • Public Const CTF_PROCESS_REF = &H4
  • Public Const CTF_THREAD_REF = &H2
  • Public Declare Function SHCreateThread Lib "shlwapi.dll" (ByVal pfnThreadProc As Long, pData As Any, ByVal dwFlags As Long, ByVal pfnCallback As Long) As Long
  • Private Declare Function GetCurrentThread Lib "kernel32" () As Long
  • Dim nb_t& ' Nombre de thread
  • Sub main()
  • ' On crée les thread
  • SHCreateThread AddressOf ShowMsgBox, ByVal 0&, CTF_INSIST, ByVal 0&
  • SHCreateThread AddressOf ShowMsgBox, ByVal 0&, CTF_INSIST, ByVal 0&
  • SHCreateThread AddressOf ShowMsgBox, ByVal 0&, CTF_INSIST, ByVal 0&
  • MsgBox "Vous devez fermer les autres boites de dialogue avant de fermer celle-la", vbCritical, "Attention"
  • End Sub
  • Sub ShowMsgBox()
  • nb_t = nb_t + 1
  • Call MsgBox("Mstgbox executé depuis la thread n°" & nb_t, vbInformation, "Multi-Thread")
  • End Sub
Public Const CTF_COINIT = &H8
Public Const CTF_INSIST = &H1
Public Const CTF_PROCESS_REF = &H4
Public Const CTF_THREAD_REF = &H2

Public Declare Function SHCreateThread Lib "shlwapi.dll" (ByVal pfnThreadProc As Long, pData As Any, ByVal dwFlags As Long, ByVal pfnCallback As Long) As Long
Private Declare Function GetCurrentThread Lib "kernel32" () As Long

Dim nb_t& ' Nombre de thread

Sub main()
    ' On crée les thread
    SHCreateThread AddressOf ShowMsgBox, ByVal 0&, CTF_INSIST, ByVal 0&
    SHCreateThread AddressOf ShowMsgBox, ByVal 0&, CTF_INSIST, ByVal 0&
    SHCreateThread AddressOf ShowMsgBox, ByVal 0&, CTF_INSIST, ByVal 0&
    
    MsgBox "Vous devez fermer les autres boites de dialogue avant de fermer celle-la", vbCritical, "Attention"
End Sub

Sub ShowMsgBox()
    nb_t = nb_t + 1
    Call MsgBox("Mstgbox executé depuis la thread n°" & nb_t, vbInformation, "Multi-Thread")
End Sub

Commentaires et avis

signaler à un administrateur
Commentaire de SATANdemon le 06/01/2003 07:54:40

Pouurait tu m'expliquer ce qu'est un thread ??
moi et l'anglais on fait 5 si tu voit ce que je veut dire ;)

mais sinon je pense que ca pourra me servir un de ces jour :)

signaler à un administrateur
Commentaire de oliv211 le 06/01/2003 09:03:31

>SATANdemon
un thread c un "processus leger" (c comme ca qu'on traduit).. en fait t'as la notion d'appartement qui vient en plus, c assez compliqué pour ne pas être expliqué en 2lignes, juste à retenir que VB est nul ds la gestion des threads, et que C++ y excelle... sinon ca sert surtout quand un composant est appelé simultanément par plusieurs "clients" .... c du gros resumé car c compliqué ;)

signaler à un administrateur
Commentaire de lumesh le 07/07/2003 17:04:25

Salut,

voila je suis en train de faire une appli de client FTP
et dedans g un systeme de recherche recursif.  qui est assez lourd
donc je voulais le mettre ds un thread mais je c pas men servir donc g pris ta src mais
le truc c ke je dois passer un param a la fonction a mettre en thread, donc saurait comment je px faire STP ?

MErci par avance pour ta réponse :)

signaler à un administrateur
Commentaire de Fedaykin le 26/03/2004 17:02:25

merci,

code rapide, relativement simple,
et qui fonctionne très bien

10/10

:)

signaler à un administrateur
Commentaire de ZedMaTrix le 27/08/2005 02:03:46

C'est super ce code !!

Mais plus d'explications sur la création de thread please !

signaler à un administrateur
Commentaire de bastoche34 le 31/08/2007 11:01:14

Merci tu me sauve la vie!!!!!
j'était persuader qu'on ne pouvez pas faire de thread en VB6

signaler à un administrateur
Commentaire de reacen le 09/08/2008 09:09:28 10/10

Et On quoi cette source t'a sauver la vie ? x')

Sinon simple source et parfaite ! 10/10!!

Tien, je peu aller juska combien de fois avec ca :

For i = 1 To 50
SHCreateThread AddressOf ShowMsgBox, ByVal 0&, CTF_INSIST, ByVal 0&
next i


C'est fesable x') ?

signaler à un administrateur
Commentaire de jipef le 23/08/2008 15:24:52

sous vista ça merde completement

signaler à un administrateur
Commentaire de hkari le 09/11/2008 11:27:16

je suis débutante dans la programmation des threads en C++builder6.
je cherche la fonction qui me permet de mettre en attente des threads (la fonction wait en java). je cherche sa correspondance en C++builder6.

merci de votre aide

signaler à un administrateur
Commentaire de Duke49 le 10/03/2009 01:48:08

Excellent !!!

Le debug du AddressOf c'est pas facile... enfin on y peut rien.
J'ai une question plus importante.
Si je souhaite faire transiter une collection, comment je fait ???

exemple qui passe pas ^^:

Dim FN_CFWT() as New Collection
...
While nbThread > 0
  SHCreateThread AddressOf FN_CFWT(nbThread), ByVal 0&, CTF_INSIST, ByVal 0&
  nbThread = nbThread - 1
Wend

signaler à un administrateur
Commentaire de Duke49 le 10/03/2009 01:53:58 10/10

J'ai fait une bourde dans l'exemple...

Dim perList() As New Collection
...
While nbThread > 0
  SHCreateThread AddressOf FN_CFWT(perList), ByVal 0&, CTF_INSIST, ByVal 0&
  nbThread = nbThread - 1
Wend


Je suis obligé de rendre mon perList déclaré en public ?

signaler à un administrateur
Commentaire de reacen le 21/03/2009 22:21:21

Et mince, j'ai vraiment monter un bon Code Serveur Winsock, qui gère les clients de cette façons, mais ca marche only sur l'IDE, quand je compile mon EXE Marche jamais (-_-)... J'ai tout essayer, Natif / P-Code etc, sa donne toujours:

L'instruction à "blablabla" emploie l'adresse mémoire "blablabla". La mémoire ne peut pas être "read" Cliquez Ok pour terminer le programme...

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version


HTC Magic

Entre 429€ et 429€


Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,265 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.