C'est pas très précis ... CAD ?Citation:
Envoyé par alaa_85
Et un partie de code pour illustrer ;)
Version imprimable
C'est pas très précis ... CAD ?Citation:
Envoyé par alaa_85
Et un partie de code pour illustrer ;)
voilà la lecture se passe on ordre en revanche je veux qu'il se passe simultanément
Code:
Merci de ton aideCode:
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
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 ;)
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:
PlayBlocWithContent() :cette methode permet de balayer les zones et de creer pour chaque zone un user controle dans ou j'affiche les vidéos.Code:
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
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 .
donc maintenant je doit creer pour chaque zone dynamiquement un BGW
c'est ca ?
Comment ?
Ouafff c'est compliqué ton code !
Donc tu dois créer un BGW pour chaque lecture en passant par une boucle :
De ce fait, tu auras 3 BGW pour 3 vidéos !Code:
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
"Argument spécifique à la video" comme quoi ???
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 ?
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 :
A travers la methde PlayContent je lis les vidéos.Code:uc.playContent(BinPath & item.MediaURL) ' MediaURL c'est le chemin du video
Merrci Aspic de ton aide, vrmt je me suis bloqué dans cette partie là :(
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
oui justement c'est ce que j'ai fait,me reste que faire la lecture dans le BGW.
je vais essayer.:mouarf:
Merci bcp Aspic
Lol allez on va y arriver ! :D
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 !
sous forme de chaines de caractéres
Merci
Ok donc c'est facile tu passes en argument la chaine de caractère de ta vidéo ! Et c'est tout.