begin process at 2013 05 21 05:05:48
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Exécution

 > MULTITHREADING ACTIVEX

MULTITHREADING ACTIVEX


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Exécution Classé sous :multithreading, activex, multicore, thread Niveau :Expert Date de création :25/05/2010 Date de mise à jour :17/04/2011 08:55:07 Vu / téléchargé :3 580 / 289

Auteur : Philippe734

Ecrire un message privé
Site perso
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Méthode de multithreading de référence d'après microsoft. Sans API, projet activeX standalone. Le projet montre comment créer des threads compartimentées. Le multithreading est déconseillé en VB6 utilisant les API de création de thread tel que SHCreateThread mais pas du tout risqué avec cette présente méthode. C'est une méthode peu connue et efficace. Elle est peu connue car peu de livre en font référence tout simplement. Cette présente méthode isole les variables des threads en les compartimentant (apartment threaded). En activeX, les threads doivent attendre car il y a des priorités de lecture/écriture.

Cette présente source, simule l'exécution d'un calcul lancé dans des threads isolées. Le résultat des threads (des calculs) sont récupérés à l'aide de RaiseEvent.

Pour envoyer une variable dans une thread, on utilise les property des class.

La mise en œuvre de cette méthode est complexe. Mais j'ai essayé de vous préparez le terrain pour l'implémenter dans vos projets. Plusieurs critères doivent être respectés :
- Projet non standard exe mais activeX standalone
- Démarrer le programme avec une procédure Sub Main ()
- Configurer "Thread per object" dans les propriétés du projet. Ce qui correspond au nbre de threads non limités
- Compilation p-code ou natif
- Choisir Standalone dans l'option "component"
- Création de thread via CreateObject(...)
- La class qui crée la thread doit être de type "multiuse"
- Un délai doit être créé dès la création de la thread (notion de callback à l'aide d'un timer d'une form)
- Les variables à envoyer dans la thread, doivent être envoyées via les property de la procédure à envoyer en thread
- La procédure à exécuter dans une thread (ici un calcul) doit être dans une class multiuse et doit générer des évènements (events)
- Les variables en sortie de la thread doivent être récupérées à l'aide d'évènements RaiseEvent
- Faut compiler le projet pour utiliser le multithreading

Cette source illustre la simulation d'un calcul exécuté dans un thread. La variable envoyé en entrée est la durée du calcul. Le résultat du calcul est récupéré à l'aide de RaiseEvent dans la form principale.

Le code contient une simple interface permettant de créer une thread et un compteur +1. Le compteur permet juste d'observer que la fenêtre n'est pas figée durant le multithreading. Cette méthode est interessante pour processeur multicore (processeur à plusieurs coeurs). Par exemple, choisissez 4 threads pour observer que 100% des ressources d'un processeur 4 cores seront utilisées.

Les options de résultat simultanés ou les uns après les autres, permettent de montrer comment récupérer des résultats de deux manières.

Les deux class nécessaires pour le multithreading peuvent-être facilement réutilisable pour vos programmes.

Principe de multithreading activeX issus du livre "Programming Microsoft Visual Basic 6.0 / Francesco Balena".


 Conclusion

Faut compiler le projet pour utiliser le multithreading.

Les deux class nécessaires pour le multithreading peuvent-être facilement réutilisable pour vos programmes.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

25 mai 2010 23:46:32 :
ajout de la capture
04 juin 2010 00:16:09 :
La modification est de taille. On peut envoyer des variables dans les threads. Mais surtout, on peut récupérer le contenus de variable à l'issu des threads via RaiseEvent.
04 juin 2010 00:21:30 :
modif de l'image
04 juin 2010 00:43:48 :
update
04 juin 2010 16:55:27 :
améliorations mineures
08 juin 2010 23:06:21 :
Ajout d'options permettant de montrer une différence lorsque les threads sont terminées. Soit les résultats des évènements sont simultanés, soit ils sont les uns après les autres.
15 juin 2010 16:29:50 :
éclaircissement au sujet du mode de compilation
17 juin 2010 20:18:55 :
améliorations mineures
17 avril 2011 08:55:07 :
Modification de la description

 Sources du même auteur

Source avec Zip [VBA] OBTENIR L'HANDLE DE LA LISTE DÉROULANTE D'UN COMBOBOX ...
Source avec Zip Source avec une capture [VBA] MOLETTE SOURIS COMBOBOX ET LISTEBOX DANS FEUILLE EXCEL...
Source avec Zip [VBA POWERPOINT] PAGINATION AVEC TOTAL DE DIAPO
Source avec Zip [VBA POWERPOINT] CRÉER UN SOMMAIRE AUTOMATIQUE
Source avec Zip Source avec une capture [VB6 BASE DE DONNÉE] DÉMO SQL SUR TABLEAU EXCEL + DATAGRID A...

 Sources de la même categorie

Source .NET (Dotnet) XWAITDOTNET _ PROCÉDURE D'ATTENTE (EN MILLISECONDES) par soldier8514
Source avec Zip Source avec une capture AIDE AU DÉBOGAGE D'APPLICATION UNE FOIS COMPILÉ par t3t3
Source avec Zip ANNUTEL3.5 par ashco
Source avec Zip CALCULATRICE par TPB
Source avec Zip Source .NET (Dotnet) PIERRE PAPIER CISEAUX par Ultrabytes

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) PROGRESSBAR PERSO par Le Pivert
Source avec Zip Source avec une capture Source .NET (Dotnet) CREER UN GIF ANIMÉ par Le Pivert
Source avec Zip Source avec une capture [VB6 - ACTIVEX] RGWEATHER - LA MÉTÉO SIMPLEMENT DANS VOS APP... par magicgus
Source avec Zip Source avec une capture [VB6 - ACTIVEX] MAGICBOX OU BOITE À CONTROLS... par magicgus
Source avec Zip Source .NET (Dotnet) [VB.NET 2008] EXECUTION MULTITHREAD DE PLUSIEURS FONCTION À ... par ShadowTzu

Commentaires et avis

Commentaire de chieur le 26/05/2010 14:26:58

Bonjour Philippe,
seul le msg box fonctionne ..
rajoute une list box apres la boucle = pas marche
textbox et label oci ..
le multithrading serai VRAIMENT cool s'il ne fige pas la page active .. :)

Commentaire de chieur le 26/05/2010 14:28:34

Dim DebutTimer As Long
    Dim Cc As Long
    DebutTimer = Timer
    Do
    Cc = Cc + 1
        'rien = attend quelques secondes en utilisant
    Loop Until (Timer - DebutTimer) >= 2    'secondes
    Me.Text2.Text = Cc
    MsgBox "calcul terminée = thread terminée" & " " & Cc, vbInformation

Commentaire de Philippe734 le 26/05/2010 16:57:39

Oui c'est que j'ai expliqué rapidement dans la description. On ne peut pas passer le contenu d'une variable de la thread principale aux autres threads et vice versa. Cependant, je suis sûr que c'est possible et je cherche d'ailleurs une solution.

Commentaire de grrnfr le 31/05/2010 08:52:37

Bonjour à tous,
Personellement, je fais du multi-threading en VB6 en programmant les threads dans des projets "ActiveX exe" et le programme principal dans un projet "standard exe".
La communication entre les le programme principal et les threads se fait via les méthodes et les events des ActiveX exe. C'est juste un peu galère si on instancie un array de threads quand on veut récupérer les events mais ça marche super bien.
Quel est l'avantage de la méthode proposée ici ?

Commentaire de Philippe734 le 31/05/2010 17:48:22

merci de ta contribution grrnfr, je vais donc inclure cette astuce dans la source. J'ai publié la source pour montrer comment faire.

Commentaire de Philippe734 le 04/06/2010 00:18:48

J'ai mis à jour la source. Grâce à toi grrnfr, j'ai enfin compris comment faire pour récupérer le résultat de variable issus de threads. Merci. En tous cas, cette méthode est vraiment excellent.

Commentaire de chieur le 05/06/2010 20:30:43 10/10

re phil g pa retel le cod kel modif a tu apporte ?

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

flash player en activex ok , mais tout intégré ... non [ par cyriax ] salut à tous,ça concerne VB.NET !voila, je fais une appli qui utilise un clip flash MX2004, pour le moment, je le charge (le clip) directement dans un [.net2] Multithreading quand tu nous tien ! [ par Lucyberad ] Bonjour a tous.j'ai un petit prblm avec une appli que je veut faire fonctionner en multithreading.j'ai fais ce petit code (que j'ai reduit au strict n Multi threading [ par JuVeNaL ] Chers tous, Je bloque sur un problème avec le multithreading. J'ai créer un sub ou je passe en arguments des données que je peche dans une DB . Jusq erreur : un composant activex ne peut pas créer d'objets [ par julienexam ] Bonjour, je suis en train de créer un programme capable de commander bartender depuis visual basics. le début de mon programme commence comme cela directX et ActiveX [ par fad7 ] slt a tous! je suis debutant en programmation et je tente de developper des trucs qui me viennent en tete avec Visual Studio 2008 en utilisant le lang Contrôles ActiveX figés sur classeur partagé [ par Atefvinc ] Bonjour à tous :) J'ai un classeur sur lequel j'ai mis des Contrôles ActiveX (boutons, texte...) qui fonctionne très bien. Cependant, dès que je [b]p Les thread [ par falaye ] je suis debutant en vb.net, je voudrais savoir l'importance et comment utiliser les thread. Thread et Windows Form [ par KerosKeros ] Bonjour à tous. J'ai une petite question concernant les threads (je débute dans l'utilisation des threads). J'ai un programme dont un thread fait une InvalidOperationException VB.NET WPF [ par Shindaraa ] Bonjour, J'ai une application qui tourne 24h sur 24... Elle plante régulièrement, après une journée des fois deux jours complétement aléatoirement. Controle Activex manquant dans ACCESS 2010 : ActiveBarcode [ par damedom41 ] Bonjour, Je travaille en VBA dans Access2010. Je souhaite ajouter un contrôle activex nommé (d'après la doc) ActiveBarcode. C'est un contrôle qui pe


Nos sponsors


Sondage...

CalendriCode

Mai 2013
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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 : 4,618 sec (3)

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