begin process at 2010 02 09 23:55:05
  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 :
7 / 10 - par 1 personne
7,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 :6 480

Auteur : vr3h

Ecrire un message privé
Site perso
Commentaire sur cette source (19)
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 avec Zip Source avec une capture Source .NET (Dotnet) INSERER TOUT TYPE DE FICHIERS DANS ORACLE EN VB.NET par SKY32
Source avec Zip Source avec une capture Source .NET (Dotnet) ENVOYER DES EMAILS AVEC PIECES JOINTES EN EXÉCUTANT BLAT par mays
Source avec Zip Source avec une capture Source .NET (Dotnet) PILOTER DES AFFICHEURS 7 SEGMENTS À PARTIR DU PORT SÉRIE OU ... par mays
Source avec Zip Source avec une capture Source .NET (Dotnet) CONTROLER LE WEBBROWSER ET IDENTIFIER LES LIENS PAR LEUR NUM... par george02
Source avec Zip Source .NET (Dotnet) LOGIN AVEC FICHIER XML par DanMor498

 Sources en rapport avec celle ci

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
Source avec Zip Source .NET (Dotnet) PARSEUR XML par cyrilremy
Source avec Zip Source avec une capture Source .NET (Dotnet) APPLICATION GPS POUR POCKET PC par errun54
Source avec Zip Source avec une capture Source .NET (Dotnet) SILVERLIGHT : DATAGRID LINQ TO XML VWD 2008 par Afyn

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

 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 Xml et Base de donnees [ par yvesyves ] Bonjour,Je cherche quelques informations pour ne pas faire un projet inutile.Un fichier Xml qui contient des membres, des mots de passe, et d'autres i Manipulation du code Xml [ par dclaise ] Bonjour à tous,je travaille pour l'instant en Vb6 et je manipule les web services.  Ce web service me retourne du Code XML.  J'aimerais bien le manipu XML en VBA - Au secours [ par manu00 ] Bonjour les amis,J'ai un très gros soucis, et j'ai absoluement besoin de vous. Je dois faire pour demain matin un petit programme en VBA.Mais dans ce XML vers Access [ par bmhbmh ] voilà je voudrai savoir comment importer les données d'un file Xml vers access.j'ai trouvé des sources qui font l'inverse  mais dans ce sens là y en a recherche dans un fichier xml en vb.net [ par diego29 ] je souhaite faire une fonction qui fait une recherche dans un fichier xml d'un ou deux objets suivant un critère. le problème est le suivant : la fonc Lecture fichier XML en VB6 [ par Amstelsoft ] Bonjour,Pour les besoins d'une applicaiton écrite en VB6, je suis à la recherche d'un OCX ou d'un code qui permet de lire un fichier XML afin d'en ext XML ajoute de fils a un parents [ par comtention ] Bonjour, Je n'arrive pas ajouter des balises fils a une balise parent en xml avec DomJ'ai -------------------------------------------&lt;contacts&gt;  xml et combobox [ par trexor ] Bonjour tout le monde, je suis a la recherche d'un lien ou d'un exemple de code simple pour afficher les données d'un fichier xml dans un combobox (et VBA - XML - INTERROGATION BD [ par orobinvd ] Bonjour, Je suis en access 97 et j'ai un gros soucis. Je dois interroger une base de données externe en XML avec Access97. Comment dois-je porceder?


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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 : 0,780 sec (3)

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