begin process at 2012 02 12 15:55:39
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

VB.NET

 > APPLI MULTITHREAD SYNCRONISÉE ET COMMENTAIRES XML

APPLI MULTITHREAD SYNCRONISÉE ET COMMENTAIRES XML


 Information sur la source

Note :
8 / 10 - par 2 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :VB.NET Source .NET ( DotNet ) Classé sous :multithread, xml, commentaire, region, syncronisation Niveau :Débutant Date de création :21/04/2006 Date de mise à jour :24/04/2006 14:23:18 Vu :7 167

Auteur : vr3h

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

 Description

Voici un petit code pour expliquer comment créer une documentation XML dans vos applications VB.Net et comment créer une application multithread avec syncronisation de l'accès aux données.
Ca a été réalisé avec VB Express et ca marche sans problème.
Donc vous n'avez qu'à créer une application console et insérer le bout de code suivant dans un "module".

Source

  • Public MonObjet As Classe1
  • Public Mut As New System.Threading.Mutex 'Objet permettant la syncronisation d'accès aux données
  • 'Un Mutex est un objet disposant de plusieurs états. Un appel à WaitOne permet d'attendre que le Mutex
  • 'soit libéré par un autre thread. Ensuite on fait un appel à ReleaseMutex pour libérer le Mutex et ainsi
  • 'permettre à un autre Thread d'acceder aux données.
  • <MTAThread()> Sub Main()
  • 'variable qui nous servira juste a calculer le temps écoulé en millisecondes
  • Dim TickDebut As Int64 = System.Environment.TickCount
  • MonObjet = New Classe1(False)
  • 'Th est l'objet qui représentera le nouveau thread, on lui passe comme argument la procédure qui
  • 'devra être executée dans ce thread
  • Dim Th As New Threading.Thread(AddressOf MonObjet.Launch)
  • 'La méthode Start d'un objet thread lance la procédure passée en argument lors de l'initialisation
  • 'Ici Th.Start lance la procédure MonObjet.Launch
  • Th.Start()
  • Do
  • Mut.WaitOne()
  • Console.WriteLine(MonObjet.NombreEntier)
  • Mut.ReleaseMutex()
  • Loop While MonObjet.NombreEntier < 100000
  • MonObjet.BRun = True
  • Console.WriteLine("Le programme a mis exactement : " & (System.Environment.TickCount - TickDebut) & " millisecondes")
  • Console.WriteLine("Appuyez sur 'Entrée' pour quitter !")
  • Console.ReadLine()
  • End Sub
  • #Region "Exemple de 'region', fermez moi et deployez moi"
  • ''' <summary>
  • ''' Exemple de commentaires XML
  • ''' </summary>
  • ''' <remarks></remarks>
  • Public Class Classe1
  • ''' <summary>
  • ''' Exemple de commentaire de membre, ici il s'agit d'un nombre qui sera incrémenté et affiché dans 2 processus différents
  • ''' </summary>
  • ''' <remarks></remarks>
  • Public NombreEntier As Int64 = 1
  • Public BRun As Boolean = False
  • ''' <summary>
  • ''' </summary>
  • ''' <param name="Param1">Commentaire de paramètres (paramètre qui ne sert à rien)</param>
  • ''' <remarks></remarks>
  • Public Sub New(ByVal Param1 As Boolean)
  • End Sub
  • ''' <summary>
  • ''' Exemple de commentaire de procedure
  • ''' Cette procedure effectue une boucle tant que BRun est Faux, mais elle vérifie avant chaque accès au membre
  • ''' NombreEntier qu'aucun autre processus n'y accède
  • ''' </summary>
  • ''' <remarks></remarks>
  • Public Sub Launch()
  • Do
  • Mut.WaitOne()
  • Me.NombreEntier += 1
  • Mut.ReleaseMutex()
  • Loop While Me.BRun = False
  • End Sub
  • End Class
  • #End Region
    Public MonObjet As Classe1

    Public Mut As New System.Threading.Mutex 'Objet permettant la syncronisation d'accès aux données
    'Un Mutex est un objet disposant de plusieurs états. Un appel à WaitOne permet d'attendre que le Mutex
    'soit libéré par un autre thread. Ensuite on fait un appel à ReleaseMutex pour libérer le Mutex et ainsi
    'permettre à un autre Thread d'acceder aux données.

    <MTAThread()> Sub Main()
        'variable qui nous servira juste a calculer le temps écoulé en millisecondes
        Dim TickDebut As Int64 = System.Environment.TickCount
        MonObjet = New Classe1(False)

        'Th est l'objet qui représentera le nouveau thread, on lui passe comme argument la procédure qui 
        'devra être executée dans ce thread
        Dim Th As New Threading.Thread(AddressOf MonObjet.Launch)
        'La méthode Start d'un objet thread lance la procédure passée en argument lors de l'initialisation
        'Ici Th.Start lance la procédure MonObjet.Launch
        Th.Start()
        Do
            Mut.WaitOne()
            Console.WriteLine(MonObjet.NombreEntier)
            Mut.ReleaseMutex()
        Loop While MonObjet.NombreEntier < 100000
        MonObjet.BRun = True
        Console.WriteLine("Le programme a mis exactement : " & (System.Environment.TickCount - TickDebut) & " millisecondes")
        Console.WriteLine("Appuyez sur 'Entrée' pour quitter !")
        Console.ReadLine()
    End Sub

#Region "Exemple de 'region', fermez moi et deployez moi"
    ''' <summary>
    ''' Exemple de commentaires XML
    ''' </summary>
    ''' <remarks></remarks>
    Public Class Classe1
        ''' <summary>
        ''' Exemple de commentaire de membre, ici il s'agit d'un nombre qui sera incrémenté et affiché dans 2 processus différents
        ''' </summary>
        ''' <remarks></remarks>
        Public NombreEntier As Int64 = 1
        Public BRun As Boolean = False

        ''' <summary>
        ''' </summary>
        ''' <param name="Param1">Commentaire de paramètres (paramètre qui ne sert à rien)</param>
        ''' <remarks></remarks>
        Public Sub New(ByVal Param1 As Boolean)
        End Sub

        ''' <summary>
        ''' Exemple de commentaire de procedure
        ''' Cette procedure effectue une boucle tant que BRun est Faux, mais elle vérifie avant chaque accès au membre
        ''' NombreEntier qu'aucun autre processus n'y accède
        ''' </summary>
        ''' <remarks></remarks>
        Public Sub Launch()
            Do
                Mut.WaitOne()
                Me.NombreEntier += 1
                Mut.ReleaseMutex()
            Loop While Me.BRun = False
        End Sub
    End Class
#End Region

 Conclusion

Donc ce code est fait pr etre modifié, pour voir les commentaires XML, amusez vous à modifier les lignes suivantes :

Un paramètre du constructeur est commenté, modifiez le paramètre de la ligne
C = New Class1(False)

Ensuite, les membres de la classe 'Class1' sont décrits, donc faites apparaitre la liste des membre de C dans ces 2 lignes.
Dim Th As New Threading.Thread(AddressOf C.Start)
Console.WriteLine(C.V)

Enfin vous verrez peut etre un - ou un + a coté de cette ligne :
#Region "Exemple de 'region', fermez moi et deployez moi"
Cliquez sur le carré pour fermer et deployer le code

ATTENTION : Il existe d'autres balises XML utilisable dans VB, a vous de voir dans l'aide comment tout ca fonctionne


 Historique

24 avril 2006 14:23:18 :
Voilà j'ai modifié le code suite aux commentaires pour qu'il soit plus facilement lisible (des noms plus explicites meme si c'est peut etre pas encore parfait) et avec des commentaires j'espere un poil plus utiles...

 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) DX9 & VB.NET : EXEMPLE 2 HLSL (SHADERS)
Source avec Zip Source avec une capture Source .NET (Dotnet) DX9 & VB.NET : EXEMPLE HLSL (SHADERS)
Source .NET (Dotnet) DÉCLARER UN OPÉRATEUR (EXEMPLE : "+")
Source avec Zip Source avec une capture Source .NET (Dotnet) DX9 & VB.NET : BOMBERMAN-LIKE
Source avec Zip Source avec une capture Source .NET (Dotnet) VB.NET ET DX9.0 : CREATEMESHFROM(NOTHING), INTERSECT, AND SA...

 Sources de la même categorie

Source .NET (Dotnet) MODIFICATION DATE DE WINDOWS EN VB.NET ET VBA par us_30
Source avec Zip Source avec une capture Source .NET (Dotnet) ENVOI DE MAIL AVEC PIÈCE JOINTE par EhJoe
Source .NET (Dotnet) AMUSONS NOUS AVEC UN LABEL ^^ par Adn56
Source avec Zip Source avec une capture Source .NET (Dotnet) UN NAVIGATEUR INTERNET EN VB.NET par azrti
Source avec Zip Source .NET (Dotnet) CONVERSION DE DEVISE MONAITAIRE VIA UN SERVICE WEB par bigmonkey7

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) EXEMPLE D'UTILISATION DU XML AVEC VB.NET par christian_grandjean
Source avec Zip Source .NET (Dotnet) [VB.NET 2008] EXECUTION MULTITHREAD DE PLUSIEURS FONCTION À ... par ShadowTzu
Source avec Zip Source avec une capture Source .NET (Dotnet) [VB.NET] SCANNER DE PORT MULTITHREADS + DELEGATE par nerone21
Source avec Zip Source .NET (Dotnet) MULTI THREAD AVEC AFFICHAGE par jaknight007
Source avec Zip Source .NET (Dotnet) GABSCREENSHOT : FAITES SIMPLEMENT ET RAPIDEMENT VOS CAPTURES... par GabSoftware

Commentaires et avis

Commentaire de Lucyberad le 22/04/2006 19:04:27

ton code est franchement pas clair, il manque aussi bocoup de commentaires...
c'est plutot mal ordonné aussi.
d'ailleurs je n'ai vu aucune syntaxe pour faire du xml (aucune syntaxe .net car le xml est tres facile avec des commandes .net)
et enfin comme c'est un code a but pedagogique et c'est meme recommandé de le faire tout le temps pour une bonne comprehension: mettre des noms de variable et de classe et autres... explicite! car la une seule lettre c'est vraiment a mon avis n'avoir aucune envie de structure.

donc voila je te fais remarquer et j'espere que tu rearangera mieux ton code (qui est peut-etre bien) car la c'est trop dur de comprendre car il manque les bases.

Commentaire de MPi le 23/04/2006 02:04:40

D'accord avec Lucyberad

Il y a trop de gens qui utilisent des variables du genre
Dim T as Whatever
Dim a as UnAutre

a = T - Y% + X&

et on finit par s'y perdre...

Les commentaires, c'est bien.
Les noms de variables ou de procédures, c'est encore mieux.
Il ne faut pas être avares de lettres. De simples Ctrl_C et Ctrl-V peuvent faciliter le travail pour ceux qui détestent entrer des lettres au clavier

Michel

Commentaire de vr3h le 24/04/2006 14:29:33

Bon je viens de mettre à jour, j'espere que c'est un peu mieux...
Pour ce qui est du XML, il s'agit de ce qui se trouve apres les triples guillemets (''')... enfin c'est un petit truc que j'ai trouvé par hasard dans MSDN, mais j'ai peut etre mal traduit ?

Commentaire de vr3h le 24/04/2006 15:23:40

Pardon, pas les guillemets mais les apostrophes...

Commentaire de Lucyberad le 24/04/2006 15:30:36

bon c'est legerement plus clair maintenant.
2 choses sont encore flou: quel est l'utilité de ton code.
et qu'est-ce que Mut.WaitOne() et Mut.ReleaseMutex()
je ne connait pas le mutex mais ca a l'air interessant.
je vais me documenter dessus...
sinon les ''' ne sont que des commentaire, ce sont des commentaire auto-crée par visual dans un fichier designer qui je crois se trouve lors de l'initialisation d'un programme par son designer.
donc oui c'est du xml mais en aucun cas tu en crée car ce sont des comentaires... (d'ou la question, quel est le but de ton code?).

Commentaire de vr3h le 24/04/2006 16:08:55

Donc le but final de ce code est juste de montrer comment créer des commentaires qui apparaissent ensuite dans les infos-bulles lors de la saisie...
Ca c'est pour la partie Documentation XML.

Pour ce qui est du Mutex voilà grosso modo comment ca marche :
Quand tu appelles WaitOne, tu as 2 cas possibles :
1/ le mutex est libre, et à ce moment là l'état du mutex est défini sur "occupé"
2/ le mutex est deja sur l'état occupé et à ce moment là le processus qui vient d'appeler WaitOne attend que le mutex soit libéré (en appelant ReleaseMutex) avant de continuer.

Donc quand tu as 2 threads qui risquent d'accéder au même moment aux mêmes données, tu utilise un mutex pour savoir si un processus y accède déjà.

Commentaire de eldim le 02/05/2006 17:38:54

Bonjour,

Encore un code du genre et toujours les mêmes commentateurs lol

LucyBerad tu ne devais pas faire un tuto la dessus ?

Commentaire de Lucyberad le 03/05/2006 01:27:24

voui c en cours.
(mais c jsute ralenti a cause de guild wars faction :p)

Commentaire de eldim le 03/05/2006 07:46:09

lol
ritualiste ou assassin ? (ou anciens métiers ?)

Commentaire de Lucyberad le 03/05/2006 10:53:34

ben la je suis au 2/3 du tuto.
apparté, assasin c du papier maché j'ai meme pas essayé et ritualiste j'aime pas aider les autres lol. moi c'est Necro/Ritualiste.
et pour le tuto ben je m'y remet car ca fait 2 jour que j'ai fini le jeux avec l'armure 60K de la fin. (merci les anglais d'etre les seuls a etre bon dans ce jeux a par ma guilde ^^).

et arretez de me parler de ce jeux car c'est pas un forum pour papotter ici de ca, et ca me donne envie de retourner dessus et le tuto avance pas ^^.
au lieu de jouer tu devrais me filer des infos sur le mutex ^^.

Commentaire de eldim le 03/05/2006 11:13:13

t'in t'es rapide toi lol

mutex j connais pas

Commentaire de vr3h le 03/05/2006 13:44:30

lol lucy tu veux savoir quoi sur le mutex ?

Commentaire de Lucyberad le 03/05/2006 20:53:58

Bon j'ai compris (du moins je pense) que le mutex sert a savoir si un controle est libre d'acces et le donne au thread qui fait appel a lui quand il est libre.
donc on fais un waitone et c bloqué juaska que le controle soit libre et le realease le realche pour que le controle soit réutilisable aps un autre.

voila je voudrai que tu comfirme ou infirme ou meme corrige ce que j'ai dit precedemment.

Commentaire de vr3h le 04/05/2006 10:32:57

Voilà c'est ça. Le mutex est un petit objet qui fonctionne un peu comme les tickets que tu prends dans un hopital
pour passer à la caisse. Quand tu arrives aux caisses, tu prends un ticket (appel à waitone). Ensuite tu attends
que ton numéro sorte pour aller au guichet (que le mutex soit libre pour l'occuper). Une fois que tu as fini, tu
parts de la caisse, laissant la place libre à la personne d'après (release mutex).

Commentaire de Lucyberad le 05/05/2006 00:20:34

trop bien l'exemple du ticket, allez zou je vais essayer de le mettre dans le tuto ^^ (en te citant ne t'inkiete pas.
sinon y'as quelque contre temps du fait que l'ecole demande un %£$/!# de dossier de soutenance sur un portail a la con (theme STI elec de cette année dans l'academie normande)...

Commentaire de vr3h le 05/05/2006 09:42:15

lol bon courrage pour le tuto et ta soutenance alors :)
et merci pour la citation :)

Commentaire de Lucyberad le 12/05/2006 09:55:11

Bon le dossier a été rendu ajourd'hui (mais kel merde !), ce week end je pense finir le tuto ^^ (hourra)

Commentaire de Lucyberad le 15/05/2006 19:11:27

Bon alors voila, apres des tonnes de recherche sur le mutex, il s'avere que en fait c'est un outil qui permet d'eviter que 2 thread accede a al meme ressource en meme temps d'un des threads.
d'ou l'utilisation de tickets.

j'ai donc regardé ton code sour visual studio, il a deja indiqué ce qui est vrai que sachant que
                Mut.WaitOne()
                Me.NombreEntier += 1
                Mut.ReleaseMutex()
est dans une classe, le Mut n'est plus reconnu (et il le surligne en bleu).
donc je l'ai viré et lancé, j'obtient 91ms.
quand je vire tout les mutex je merde pas et obtient 31ms.
donc voila, le mutex dans ton cas ne sert apparament a rien.

je me suis renseigné et vu que le mutex ne sert en fait qu'a proteger si un thread accede a une donnée qui necessite .close comme un stream par exemple ou des traitement asynchrone comme un ping asynchrone (alors que dans mon tuto je montre l'exemple d'un ping sur un thread different qui est largement mieux, le multithread est 10x mieux que les demandes asynchrone).

voilou, donc avec ces infos, sachant que je fais un tuto pour debuter et approfondir legerement et surtout faire un code propre, je ne mettrait pas dans un premier temps le mutex.

Commentaire de vr3h le 16/05/2006 17:10:08

D'accord :) tout ca c'est bon à savoir ^^ :)
vivement le tuto alors

Commentaire de blq le 17/09/2011 23:38:14 9/10

Intéressant ce code et la discussion autour du Thread, par contre depuis 2006, le Tuto ne semble pas avoir abouti par une présence sur le site... Dommage !

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Inserer un commentaire dans un fichier XML [ par zoglub14 ] Bonjour à toutes &amp; tous,Je cherche à inserer un commentaire dans un fichier XML que je crée mais je n'y arrive pas !Voila le fichier XML :<a class Création d'un fichier xml [ par boboss76 ] Bonjour Débutant en vb, je cherche un script qui permettrait de créer un fichier xml ayant cette forme 2006 2 VBA export xml perso [ par Byrong ] Bonjour Voila j'ai une base de donnée d'étudiant que j'ai pris a titre de test. J'aimerais savoir comment faire pour exporter les informations d'un XML VB.NET [ par zer988 ] bonjour voiala je suis al recherche d'un code d'une application qui Représenter un fichier XML dans un contrôle TreeView avec possibilité de mise à j Insérer fichier XML dans une base de données [ par NSUADI ] Bonsoir à tous!! j'ai un petit soucis qui est le suivant: j'ai en fichier xml nommé Ajout.xml: [code=xml] - - 1 john jack 12 </tab XML et Base de données [ par NSUADI ] Bonsoir!! je viens au près de vous afin d'obtenir quelques précisions en ce qui concerne le xml et les bases de données. en effet,on peut voir que le Imports System.Xml fonctionne pas [ par Duke49 ] Si je n'ajoute pas la lib dans les réferences, vb ne valide pas l'importation et rien n'est reconnu !?? [code=vb] Imports System.Xml Public Class Re Schema xsd d'une table [ par NSUADI ] Bonsoir à tous!! j'aimerai savoir quel requête T-Sql permet de créer le schéma XML correspondant à une table(.xsd) pour l'écrire ensuite dans un fich


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 1,326 sec (4)

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