IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

comment utiliser Les threads


Sujet :

VB.NET

  1. #21
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Citation Envoyé par alaa_85
    Reste toujours le meme probleme
    C'est pas très précis ... CAD ?

    Et un partie de code pour illustrer
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  2. #22
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Mai 2007
    Messages : 94
    Par défaut
    voilà la lecture se passe on ordre en revanche je veux qu'il se passe simultanément
    Code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    Public Class Media
     
        Dim BinPath As String = Application.StartupPath & "\" 'le chemin vers le repertoire Bin
        Dim c_planning As Planning
        Dim startApp As DateTime
        Dim theFile As FileStream
        Dim writer As StreamWriter
     
        ''' <summary>
        ''' Merthode permet de faire la Lecture des medias par Bloc
        ''' </summary>
        ''' <remarks></remarks>
        Public Sub PlayBlocWithContent()
            Dim mTimeline As TimeLine
            Dim uc As UserControl1
     
            For Each vZone As DataRowView In dv_zone
                dv_TimeLine.RowFilter = "ZoneID=" & vZone("ZoneID")
                Dim p As Point
     
                If Me.InvokeRequired Then
                    Me.Invoke(New MethodInvoker(AddressOf PlayBlocWithContent))
                Else
                    'creation des users controle pour chaque zone
                    uc = New UserControl1
                    uc.Name = "uc" & vZone("ZoneID")
                    uc.Height = vZone("ZoneHieght")
                    uc.Width = vZone("ZoneWidth")
                    uc.Top = vZone("ZoneTop")
                    uc.Left = vZone("ZoneLeft")
                    p.X = vZone("ZoneLeft")
                    p.Y = vZone("ZoneRight")
                    uc.Location = p
                    Me.Controls.Add(uc)
     
                    For Each vTimeLine As DataRowView In dv_TimeLine
                        mTimeline = New TimeLine
                        mTimeline.TimeLineID = vTimeLine("TimeLineID")
                        mTimeline.TimeLineName = vTimeLine("TimeLineName")
                        mTimeline.ZoneID = vTimeLine("ZoneID")
                        mTimeline.Ajouter_Bloc()
                        trierBlocsWithContent(mTimeline)
                    Next
                End If
     
            Next
        End Sub
     
        Dim d_content As DateTime = dv_Planning.Item(0).Item("PlanningStartDate")
        Dim d_bloc As DateTime = dv_Planning.Item(0).Item("PlanningStartDate")
     
        ''' <summary>
        ''' Methode permet de trie les contenus par Bloc
        ''' </summary>
        ''' <remarks></remarks>
        ''' 
        Public Sub trierBlocsWithContent(ByVal obj As Object)
            Dim vTimeline As New TimeLine
            vTimeline.TrieBloc()
            vTimeline = CType(obj, TimeLine)
     
            Dim uc As UserControl1
            uc = Me.Controls("uc" & vTimeline.ZoneID.ToString())
            For i As Integer = 0 To vTimeline.Array_Bloc.Count - 1
                Dim c_bloc As Bloc = CType(vTimeline.Array_Bloc.Item(i), Bloc)
     
                If d_bloc.AddSeconds(CType(vTimeline.Array_Bloc.Item(i), Bloc).BlocDuration) >= Now Then
                    CType(vTimeline.Array_Bloc(i), Bloc).TrieContent()
                    For Each item As Content In CType(vTimeline.Array_Bloc(i), Bloc).Array_Content
                        uc.playContent(BinPath & item.MediaURL)
                        uc.SetBounds(uc.Location.X, uc.Location.Y, uc.Width, uc.Height, BoundsSpecified.All)
                        Thread.Sleep(1000) 'pause pendant la durée du media
                        d_content = d_content.AddSeconds(item.contentDuration)
                    Next
                End If
                d_bloc = d_bloc.AddSeconds(CType(vTimeline.Array_Bloc.Item(i), Bloc).BlocDuration)
            Next
        End Sub
     
        ''' <summary>
        ''' chargement de de l'application 
        ''' </summary>
        ''' <param name="sender"></param>
        ''' <param name="e"></param>
        ''' <remarks></remarks>
        Private Sub Media_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Me.WindowState = FormWindowState.Maximized
            Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None
     
            Dim BDW As New System.ComponentModel.BackgroundWorker
            AddHandler BDW.DoWork, AddressOf Traitement
            AddHandler BDW.RunWorkerCompleted, AddressOf Termine
            BDW.RunWorkerAsync()
        End Sub
     
        Private Sub Traitement(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs)
            PlayBlocWithContent()
        End Sub
     
        Private Sub Termine(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs)
            MsgBox("Traitement terminé")
        End Sub
     
    End Class
    Merci de ton aide

  3. #23
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Ok tu veux les lire en meme temps. Il faut donc appeller autant de backgroundWorker que de video.

    Ou est dans ton code la liste des vidéos et quelle est l'intruction qui les lit ?

    PS : Utilise des Block With pour alleger ton code
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  4. #24
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Mai 2007
    Messages : 94
    Par défaut
    beh voilà j'explique:
    dans chaque ecran contient plusieurs Zones, et chaque zone contient plusieurs Blocs, et aussi chaque bloc contient plusieurs Contenus.
    Contenus : soit Videos,Texts,Images etc....

    j'éspre que tu as pigé l'hiérarchie
    voilà le code qui fait la lecture:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    Public Sub PlayBlocWithContent()
            Dim mTimeline As TimeLine
            Dim uc As UserControl1
     
            For Each vZone As DataRowView In dv_zone
                dv_TimeLine.RowFilter = "ZoneID=" & vZone("ZoneID")
                Dim p As Point
     
                If Me.InvokeRequired Then
                    Me.Invoke(New MethodInvoker(AddressOf PlayBlocWithContent))
                Else
                    'creation des users controle pour chaque zone
                    uc = New UserControl1
                    uc.Name = "uc" & vZone("ZoneID")
                    uc.Height = vZone("ZoneHieght")
                    uc.Width = vZone("ZoneWidth")
                    uc.Top = vZone("ZoneTop")
                    uc.Left = vZone("ZoneLeft")
                    p.X = vZone("ZoneLeft")
                    p.Y = vZone("ZoneRight")
                    uc.Location = p
                    Me.Controls.Add(uc)
     
                    For Each vTimeLine As DataRowView In dv_TimeLine
                        mTimeline = New TimeLine
                        mTimeline.TimeLineID = vTimeLine("TimeLineID")
                        mTimeline.TimeLineName = vTimeLine("TimeLineName")
                        mTimeline.ZoneID = vTimeLine("ZoneID")
                        mTimeline.Ajouter_Bloc()
                        trierBlocsWithContent(mTimeline)
                    Next
                End If
     
            Next
        End Sub
     
        Dim d_content As DateTime = dv_Planning.Item(0).Item("PlanningStartDate")
        Dim d_bloc As DateTime = dv_Planning.Item(0).Item("PlanningStartDate")
     
        ''' <summary>
        ''' Methode permet de trie les contenus par Bloc
        ''' </summary>
        ''' <remarks></remarks>
        ''' 
        Public Sub trierBlocsWithContent(ByVal obj As Object)
            Dim vTimeline As New TimeLine
            vTimeline.TrieBloc()
            vTimeline = CType(obj, TimeLine)
     
            Dim uc As UserControl1
            uc = Me.Controls("uc" & vTimeline.ZoneID.ToString())
            For i As Integer = 0 To vTimeline.Array_Bloc.Count - 1
                Dim c_bloc As Bloc = CType(vTimeline.Array_Bloc.Item(i), Bloc)
     
                If d_bloc.AddSeconds(CType(vTimeline.Array_Bloc.Item(i), Bloc).BlocDuration) >= Now Then
                    CType(vTimeline.Array_Bloc(i), Bloc).TrieContent()
                    For Each item As Content In CType(vTimeline.Array_Bloc(i), Bloc).Array_Content
                        uc.playContent(BinPath & item.MediaURL)
                        uc.SetBounds(uc.Location.X, uc.Location.Y, uc.Width, uc.Height, BoundsSpecified.All)
                        Thread.Sleep(1000) 'pause pendant la durée du media
                        d_content = d_content.AddSeconds(item.contentDuration)
                    Next
                End If
                d_bloc = d_bloc.AddSeconds(CType(vTimeline.Array_Bloc.Item(i), Bloc).BlocDuration)
            Next
        End Sub
    PlayBlocWithContent() :cette methode permet de balayer les zones et de creer pour chaque zone un user controle dans ou j'affiche les vidéos.

    trierBlocsWithContent(ByVal obj As Object) : cette methode permet de faire la lecture des vidéos pour chaque zone.

    j'éspére que tu as compris un petit peu le principe de mon projet et Merci infiniment pour tes reponces .

  5. #25
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Mai 2007
    Messages : 94
    Par défaut
    donc maintenant je doit creer pour chaque zone dynamiquement un BGW
    c'est ca ?
    Comment ?

  6. #26
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Ouafff c'est compliqué ton code !
    Donc tu dois créer un BGW pour chaque lecture en passant par une boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    'On imagine 3 Videos à lire en meme tps :
    For i as integer = 0 to 3
            Dim BDW As New System.ComponentModel.BackgroundWorker
            AddHandler BDW.DoWork, AddressOf Traitement
            AddHandler BDW.RunWorkerCompleted, AddressOf Termine
            BDW.RunWorkerAsync("Argument spécifique à la video")
    Next
     
    'pour récupérer l'argument :
     Private Sub Traitement(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs)
            PlayBlocWithContent(e.Argument)
        End Sub
    De ce fait, tu auras 3 BGW pour 3 vidéos !
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  7. #27
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Mai 2007
    Messages : 94
    Par défaut
    "Argument spécifique à la video" comme quoi ???

  8. #28
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Justement c'est à toi de ma le dire !
    Par exemple le nom de la video ! SInon coment la procédure va savoir quelle video lancer ?
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  9. #29
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Mai 2007
    Messages : 94
    Par défaut
    les information du Video est Stocké dans un Fichier XML danc je fais un parcour sur le fichier et par la suite je prend juste le chemin du video voilà le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     uc.playContent(BinPath & item.MediaURL) ' MediaURL c'est le chemin du video
    A travers la methde PlayContent je lis les vidéos.
    Merrci Aspic de ton aide, vrmt je me suis bloqué dans cette partie là

  10. #30
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Dans ce cas la, il faut diviser ta procédure en deux :

    - D'abord tu parcours ton fichier XML et tu recuperes les infos de tes videos dans un Thread par ex.
    - Ensuite tu parcours le tableau où tu auras stocké les paths des videos et tu les lis dans le BGW.

    Voila
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  11. #31
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Mai 2007
    Messages : 94
    Par défaut
    oui justement c'est ce que j'ai fait,me reste que faire la lecture dans le BGW.
    je vais essayer.
    Merci bcp Aspic

  12. #32
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Lol allez on va y arriver !

    Dis moi sous quelle forme sont les paths de tes videos ? (tableau, chaine de caractère.. ?)

    En fonction de cela on verra pour l'argument du BGW !
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  13. #33
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Mai 2007
    Messages : 94
    Par défaut
    sous forme de chaines de caractéres
    Merci

  14. #34
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Ok donc c'est facile tu passes en argument la chaine de caractère de ta vidéo ! Et c'est tout.
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

Discussions similaires

  1. Comment utiliser les thread dans ce cas ?
    Par ketchupi dans le forum Threads & Processus
    Réponses: 5
    Dernier message: 03/06/2011, 00h56
  2. [ListSelectionListener] comment utiliser les threads?
    Par zaboug dans le forum Composants
    Réponses: 7
    Dernier message: 21/05/2010, 14h23
  3. comment utiliser les threads
    Par oumay dans le forum Général Java
    Réponses: 1
    Dernier message: 15/02/2010, 00h35
  4. Comment utiliser les Threads en VC++?
    Par mambo dans le forum MFC
    Réponses: 2
    Dernier message: 16/06/2006, 14h04
  5. [C# 2.0][Form]Comment utiliser les Delegates & Threading
    Par Tips dans le forum Windows Forms
    Réponses: 8
    Dernier message: 08/01/2006, 14h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo