bonsoir. je sais que beaucoup de topic sur ce site parle de minuteur et m^me dans la faq. mais j'ai beau lire et essayé mais je n'y arrive pas.
le problème est qu'on me demande de faire un minuteur entièrement avec de la programmation orientée objet.
voici mon code le code de la classe Minuteur:
et derrière un bouton sur un formulaire :
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 Public Class Minuteur Friend WithEvents tm1 As System.Timers.Timer Private lab As System.Windows.Forms.Label Private _tmpEcl As TimeSpan Private span1 As TimeSpan = TimeSpan.Zero Private span2 As TimeSpan = New TimeSpan(0, 0, 0, 1, 0) 'déclaration des methodes 'Constructeur Public Sub Init_Min(ByVal lb As System.Windows.Forms.Label) _tmpEcl = TimeSpan.Zero lab = lb End Sub 'prcoedure qui demarre le minuteur Public Sub Demarrer() tm1 = New System.Timers.Timer tm1.Start() End Sub 'procedure qui affiche le resultat du compteur Private Sub affiche() _tmpEcl = span1.Add(span2) lab.Text = _tmpEcl.ToString End Sub 'action du timer Private Sub tm1_Elapsed(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs) Handles tm1.Elapsed affiche() End Sub End Class
mais je reçois ce message à chaque fois que clique sur le bouton
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Private Sub Butt_act1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Butt_act1.Click Dim min1 As Minuteur = New Minuteur min1.Init_Min(Labecl1) min1.Demarrer() Butt_act1.Text = "Stop" End Sub
j'ai déja réalisé ce programme en vb6 sans POO mais ici c'est un peu du spaghetti pour moi.Cross-thread operation not valid: Control 'Labecl1' accessed from a thread other than the thread it was created on.
merci de vous porter sur mon problème.
Partager