Pour l'animation de texte sur un afficheur epson (2 lignes 7 segments),
J'ai réalisé un composant pour faire cela.
L'animation des 2 lignes ce fait grace à 2 timers.
Ca fonctionne bien mais un problème se pose !
En effet quand l'animation est en route cela à pour effet de ralentir les
actions sur la form parent.
Donc ma question est :
Est-il possible de réalisé les animations dans un thread séparé ?
J'ai essayé plein de choses mais rien ne marche.
Merci.
Pour l'animation de texte sur un afficheur epson (2 lignes 7 segments),
J'ai réalisé un composant pour faire cela.
L'animation des 2 lignes ce fait grace à 2 timers.
Ca fonctionne bien mais un problème se pose !
En effet quand l'animation est en route cela à pour effet de ralentir les
actions sur la form parent.
Donc ma question est :
Est-il possible de réalisé les animations dans un thread séparé ?
J'ai essayé plein de choses mais rien ne marche.
Merci.
Pour l'animation de texte sur un afficheur epson (2 lignes 7 segments),
J'ai réalisé un composant pour faire cela.
L'animation des 2 lignes ce fait grace à 2 timers.
Ca fonctionne bien mais un problème se pose !
En effet quand l'animation est en route cela à pour effet de ralentir les
actions sur la form parent.
Donc ma question est :
Est-il possible de réalisé les animations dans un thread séparé ?
J'ai essayé plein de choses mais rien ne marche.
Merci.
Bonjour claudetom,
Je ne répondrai qu'à cette question :
Est-il possible de réalisé les animations dans un thread séparé ?
La réponse oui, c'est possible.
Comment, je ne sais pas.
En effet, j'ai déjà essayé de me pencher sur 1 thread pour faire "tourner"
une progressbar, mais hélàs, sans succès, et je n'avais pas cherché à
demander de l'aide ici.
Je vais donc suivre avec intérêt ta demande :).
Stéphane.
"claudetom" a écrit dans le message de
news:
> Pour l'animation de texte sur un afficheur epson (2 lignes 7 segments),
> J'ai réalisé un composant pour faire cela.
> L'animation des 2 lignes ce fait grace à 2 timers.
> Ca fonctionne bien mais un problème se pose !
> En effet quand l'animation est en route cela à pour effet de ralentir les
> actions sur la form parent.
> Donc ma question est :
> Est-il possible de réalisé les animations dans un thread séparé ?
> J'ai essayé plein de choses mais rien ne marche.
>
> Merci.
>
Bonjour claudetom,
Je ne répondrai qu'à cette question :
Est-il possible de réalisé les animations dans un thread séparé ?
La réponse oui, c'est possible.
Comment, je ne sais pas.
En effet, j'ai déjà essayé de me pencher sur 1 thread pour faire "tourner"
une progressbar, mais hélàs, sans succès, et je n'avais pas cherché à
demander de l'aide ici.
Je vais donc suivre avec intérêt ta demande :).
Stéphane.
"claudetom" <claudetom@discussions.microsoft.com> a écrit dans le message de
news: EB0440D5-E601-4961-905A-EF79D08D08FA@microsoft.com...
> Pour l'animation de texte sur un afficheur epson (2 lignes 7 segments),
> J'ai réalisé un composant pour faire cela.
> L'animation des 2 lignes ce fait grace à 2 timers.
> Ca fonctionne bien mais un problème se pose !
> En effet quand l'animation est en route cela à pour effet de ralentir les
> actions sur la form parent.
> Donc ma question est :
> Est-il possible de réalisé les animations dans un thread séparé ?
> J'ai essayé plein de choses mais rien ne marche.
>
> Merci.
>
Bonjour claudetom,
Je ne répondrai qu'à cette question :
Est-il possible de réalisé les animations dans un thread séparé ?
La réponse oui, c'est possible.
Comment, je ne sais pas.
En effet, j'ai déjà essayé de me pencher sur 1 thread pour faire "tourner"
une progressbar, mais hélàs, sans succès, et je n'avais pas cherché à
demander de l'aide ici.
Je vais donc suivre avec intérêt ta demande :).
Stéphane.
"claudetom" a écrit dans le message de
news:
> Pour l'animation de texte sur un afficheur epson (2 lignes 7 segments),
> J'ai réalisé un composant pour faire cela.
> L'animation des 2 lignes ce fait grace à 2 timers.
> Ca fonctionne bien mais un problème se pose !
> En effet quand l'animation est en route cela à pour effet de ralentir les
> actions sur la form parent.
> Donc ma question est :
> Est-il possible de réalisé les animations dans un thread séparé ?
> J'ai essayé plein de choses mais rien ne marche.
>
> Merci.
>
Pour l'animation de texte sur un afficheur epson (2 lignes 7 segments),
J'ai réalisé un composant pour faire cela.
L'animation des 2 lignes ce fait grace à 2 timers.
Ca fonctionne bien mais un problème se pose !
En effet quand l'animation est en route cela à pour effet de ralentir les
actions sur la form parent.
Donc ma question est :
Est-il possible de réalisé les animations dans un thread séparé ?
J'ai essayé plein de choses mais rien ne marche.
Merci.
Pour l'animation de texte sur un afficheur epson (2 lignes 7 segments),
J'ai réalisé un composant pour faire cela.
L'animation des 2 lignes ce fait grace à 2 timers.
Ca fonctionne bien mais un problème se pose !
En effet quand l'animation est en route cela à pour effet de ralentir les
actions sur la form parent.
Donc ma question est :
Est-il possible de réalisé les animations dans un thread séparé ?
J'ai essayé plein de choses mais rien ne marche.
Merci.
Pour l'animation de texte sur un afficheur epson (2 lignes 7 segments),
J'ai réalisé un composant pour faire cela.
L'animation des 2 lignes ce fait grace à 2 timers.
Ca fonctionne bien mais un problème se pose !
En effet quand l'animation est en route cela à pour effet de ralentir les
actions sur la form parent.
Donc ma question est :
Est-il possible de réalisé les animations dans un thread séparé ?
J'ai essayé plein de choses mais rien ne marche.
Merci.
Bonjour,
avec un peu de retard et en esperant que cela te serve à quelque chose, je
t'ai fait une petite Form qui contient deux ProgressBars qui évoluent
différemment dans le temps sans que l'interface en soit affectée :
Public Class Form1
Inherits System.Windows.Forms.Form
Private Thread1 As System.Threading.Thread
Private Thread2 As System.Threading.Thread
#Region " Windows Form Designer generated code "
Public Sub New()
MyBase.New()
'This call is required by the Windows Form Designer.
InitializeComponent()
'Add any initialization after the InitializeComponent() call
End Sub
'Form overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
Friend WithEvents ProgressBar1 As System.Windows.Forms.ProgressBar
Friend WithEvents ProgressBar2 As System.Windows.Forms.ProgressBar
<System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()
Me.ProgressBar1 = New System.Windows.Forms.ProgressBar
Me.ProgressBar2 = New System.Windows.Forms.ProgressBar
Me.SuspendLayout()
'
'ProgressBar1
'
Me.ProgressBar1.Location = New System.Drawing.Point(16, 24)
Me.ProgressBar1.Name = "ProgressBar1"
Me.ProgressBar1.Size = New System.Drawing.Size(312, 23)
Me.ProgressBar1.Step = 1
Me.ProgressBar1.TabIndex = 0
'
'ProgressBar2
'
Me.ProgressBar2.Location = New System.Drawing.Point(16, 88)
Me.ProgressBar2.Name = "ProgressBar2"
Me.ProgressBar2.Size = New System.Drawing.Size(312, 23)
Me.ProgressBar2.Step = 1
Me.ProgressBar2.TabIndex = 1
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(344, 149)
Me.Controls.Add(Me.ProgressBar2)
Me.Controls.Add(Me.ProgressBar1)
Me.MaximumSize = New System.Drawing.Size(352, 176)
Me.MinimumSize = New System.Drawing.Size(352, 176)
Me.Name = "Form1"
Me.Text = "Test"
Me.ResumeLayout(False)
End Sub
#End Region
Private Sub Form1_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim MyProgressBar1, MyProgressBar2 As MyProgressBar
MyProgressBar1 = New MyProgressBar(Me, Me.ProgressBar1, 50)
Thread1 = New System.Threading.Thread(AddressOf
MyProgressBar1.BeginProgress)
MyProgressBar2 = New MyProgressBar(Me, Me.ProgressBar2, 150)
Thread2 = New System.Threading.Thread(AddressOf
MyProgressBar2.BeginProgress)
Thread1.Start()
Thread2.Start()
End Sub
Private Sub Form1_Closing(ByVal sender As Object, ByVal e As
System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
Try
Thread1.Abort()
Catch ex As Exception
'
End Try
Try
Thread2.Abort()
Catch ex As Exception
'
End Try
End Sub
End Class
Public Class MyProgressBar
Private Delegate Sub ProgressBarDelegate()
Private _Timer As Timers.Timer
Private _Form As System.Windows.Forms.Form
Private _ProgressBar As ProgressBar
Private _ProgressBarDelegateObj As ProgressBarDelegate
Public Sub New(ByRef FormObj As System.Windows.Forms.Form, ByRef
ProgressBarObj As ProgressBar, ByVal TimerInterval As Double)
_Form = FormObj
_ProgressBar = ProgressBarObj
_Timer = New Timers.Timer
_Timer.Interval = TimerInterval
AddHandler _Timer.Elapsed, AddressOf TimerElapsed
_ProgressBarDelegateObj = New ProgressBarDelegate(AddressOf
ShowResult)
End Sub
Public Sub BeginProgress()
_Timer.Enabled = True
End Sub
Private Sub TimerElapsed(ByVal sender As Object, ByVal e As
System.Timers.ElapsedEventArgs)
_Timer.Enabled = False
_Form.Invoke(_ProgressBarDelegateObj)
If _ProgressBar.Value <= _ProgressBar.Maximum Then _Timer.Enabled =
True
End Sub
Private Sub ShowResult()
_ProgressBar.Increment(1)
End Sub
End Class
Bonne journée.
--
fmillox
"claudetom" a écrit :
> Pour l'animation de texte sur un afficheur epson (2 lignes 7 segments),
> J'ai réalisé un composant pour faire cela.
> L'animation des 2 lignes ce fait grace à 2 timers.
> Ca fonctionne bien mais un problème se pose !
> En effet quand l'animation est en route cela à pour effet de ralentir les
> actions sur la form parent.
> Donc ma question est :
> Est-il possible de réalisé les animations dans un thread séparé ?
> J'ai essayé plein de choses mais rien ne marche.
>
> Merci.
>
Bonjour,
avec un peu de retard et en esperant que cela te serve à quelque chose, je
t'ai fait une petite Form qui contient deux ProgressBars qui évoluent
différemment dans le temps sans que l'interface en soit affectée :
Public Class Form1
Inherits System.Windows.Forms.Form
Private Thread1 As System.Threading.Thread
Private Thread2 As System.Threading.Thread
#Region " Windows Form Designer generated code "
Public Sub New()
MyBase.New()
'This call is required by the Windows Form Designer.
InitializeComponent()
'Add any initialization after the InitializeComponent() call
End Sub
'Form overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
Friend WithEvents ProgressBar1 As System.Windows.Forms.ProgressBar
Friend WithEvents ProgressBar2 As System.Windows.Forms.ProgressBar
<System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()
Me.ProgressBar1 = New System.Windows.Forms.ProgressBar
Me.ProgressBar2 = New System.Windows.Forms.ProgressBar
Me.SuspendLayout()
'
'ProgressBar1
'
Me.ProgressBar1.Location = New System.Drawing.Point(16, 24)
Me.ProgressBar1.Name = "ProgressBar1"
Me.ProgressBar1.Size = New System.Drawing.Size(312, 23)
Me.ProgressBar1.Step = 1
Me.ProgressBar1.TabIndex = 0
'
'ProgressBar2
'
Me.ProgressBar2.Location = New System.Drawing.Point(16, 88)
Me.ProgressBar2.Name = "ProgressBar2"
Me.ProgressBar2.Size = New System.Drawing.Size(312, 23)
Me.ProgressBar2.Step = 1
Me.ProgressBar2.TabIndex = 1
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(344, 149)
Me.Controls.Add(Me.ProgressBar2)
Me.Controls.Add(Me.ProgressBar1)
Me.MaximumSize = New System.Drawing.Size(352, 176)
Me.MinimumSize = New System.Drawing.Size(352, 176)
Me.Name = "Form1"
Me.Text = "Test"
Me.ResumeLayout(False)
End Sub
#End Region
Private Sub Form1_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim MyProgressBar1, MyProgressBar2 As MyProgressBar
MyProgressBar1 = New MyProgressBar(Me, Me.ProgressBar1, 50)
Thread1 = New System.Threading.Thread(AddressOf
MyProgressBar1.BeginProgress)
MyProgressBar2 = New MyProgressBar(Me, Me.ProgressBar2, 150)
Thread2 = New System.Threading.Thread(AddressOf
MyProgressBar2.BeginProgress)
Thread1.Start()
Thread2.Start()
End Sub
Private Sub Form1_Closing(ByVal sender As Object, ByVal e As
System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
Try
Thread1.Abort()
Catch ex As Exception
'
End Try
Try
Thread2.Abort()
Catch ex As Exception
'
End Try
End Sub
End Class
Public Class MyProgressBar
Private Delegate Sub ProgressBarDelegate()
Private _Timer As Timers.Timer
Private _Form As System.Windows.Forms.Form
Private _ProgressBar As ProgressBar
Private _ProgressBarDelegateObj As ProgressBarDelegate
Public Sub New(ByRef FormObj As System.Windows.Forms.Form, ByRef
ProgressBarObj As ProgressBar, ByVal TimerInterval As Double)
_Form = FormObj
_ProgressBar = ProgressBarObj
_Timer = New Timers.Timer
_Timer.Interval = TimerInterval
AddHandler _Timer.Elapsed, AddressOf TimerElapsed
_ProgressBarDelegateObj = New ProgressBarDelegate(AddressOf
ShowResult)
End Sub
Public Sub BeginProgress()
_Timer.Enabled = True
End Sub
Private Sub TimerElapsed(ByVal sender As Object, ByVal e As
System.Timers.ElapsedEventArgs)
_Timer.Enabled = False
_Form.Invoke(_ProgressBarDelegateObj)
If _ProgressBar.Value <= _ProgressBar.Maximum Then _Timer.Enabled =
True
End Sub
Private Sub ShowResult()
_ProgressBar.Increment(1)
End Sub
End Class
Bonne journée.
--
fmillox
"claudetom" a écrit :
> Pour l'animation de texte sur un afficheur epson (2 lignes 7 segments),
> J'ai réalisé un composant pour faire cela.
> L'animation des 2 lignes ce fait grace à 2 timers.
> Ca fonctionne bien mais un problème se pose !
> En effet quand l'animation est en route cela à pour effet de ralentir les
> actions sur la form parent.
> Donc ma question est :
> Est-il possible de réalisé les animations dans un thread séparé ?
> J'ai essayé plein de choses mais rien ne marche.
>
> Merci.
>
Bonjour,
avec un peu de retard et en esperant que cela te serve à quelque chose, je
t'ai fait une petite Form qui contient deux ProgressBars qui évoluent
différemment dans le temps sans que l'interface en soit affectée :
Public Class Form1
Inherits System.Windows.Forms.Form
Private Thread1 As System.Threading.Thread
Private Thread2 As System.Threading.Thread
#Region " Windows Form Designer generated code "
Public Sub New()
MyBase.New()
'This call is required by the Windows Form Designer.
InitializeComponent()
'Add any initialization after the InitializeComponent() call
End Sub
'Form overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
Friend WithEvents ProgressBar1 As System.Windows.Forms.ProgressBar
Friend WithEvents ProgressBar2 As System.Windows.Forms.ProgressBar
<System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()
Me.ProgressBar1 = New System.Windows.Forms.ProgressBar
Me.ProgressBar2 = New System.Windows.Forms.ProgressBar
Me.SuspendLayout()
'
'ProgressBar1
'
Me.ProgressBar1.Location = New System.Drawing.Point(16, 24)
Me.ProgressBar1.Name = "ProgressBar1"
Me.ProgressBar1.Size = New System.Drawing.Size(312, 23)
Me.ProgressBar1.Step = 1
Me.ProgressBar1.TabIndex = 0
'
'ProgressBar2
'
Me.ProgressBar2.Location = New System.Drawing.Point(16, 88)
Me.ProgressBar2.Name = "ProgressBar2"
Me.ProgressBar2.Size = New System.Drawing.Size(312, 23)
Me.ProgressBar2.Step = 1
Me.ProgressBar2.TabIndex = 1
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(344, 149)
Me.Controls.Add(Me.ProgressBar2)
Me.Controls.Add(Me.ProgressBar1)
Me.MaximumSize = New System.Drawing.Size(352, 176)
Me.MinimumSize = New System.Drawing.Size(352, 176)
Me.Name = "Form1"
Me.Text = "Test"
Me.ResumeLayout(False)
End Sub
#End Region
Private Sub Form1_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim MyProgressBar1, MyProgressBar2 As MyProgressBar
MyProgressBar1 = New MyProgressBar(Me, Me.ProgressBar1, 50)
Thread1 = New System.Threading.Thread(AddressOf
MyProgressBar1.BeginProgress)
MyProgressBar2 = New MyProgressBar(Me, Me.ProgressBar2, 150)
Thread2 = New System.Threading.Thread(AddressOf
MyProgressBar2.BeginProgress)
Thread1.Start()
Thread2.Start()
End Sub
Private Sub Form1_Closing(ByVal sender As Object, ByVal e As
System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
Try
Thread1.Abort()
Catch ex As Exception
'
End Try
Try
Thread2.Abort()
Catch ex As Exception
'
End Try
End Sub
End Class
Public Class MyProgressBar
Private Delegate Sub ProgressBarDelegate()
Private _Timer As Timers.Timer
Private _Form As System.Windows.Forms.Form
Private _ProgressBar As ProgressBar
Private _ProgressBarDelegateObj As ProgressBarDelegate
Public Sub New(ByRef FormObj As System.Windows.Forms.Form, ByRef
ProgressBarObj As ProgressBar, ByVal TimerInterval As Double)
_Form = FormObj
_ProgressBar = ProgressBarObj
_Timer = New Timers.Timer
_Timer.Interval = TimerInterval
AddHandler _Timer.Elapsed, AddressOf TimerElapsed
_ProgressBarDelegateObj = New ProgressBarDelegate(AddressOf
ShowResult)
End Sub
Public Sub BeginProgress()
_Timer.Enabled = True
End Sub
Private Sub TimerElapsed(ByVal sender As Object, ByVal e As
System.Timers.ElapsedEventArgs)
_Timer.Enabled = False
_Form.Invoke(_ProgressBarDelegateObj)
If _ProgressBar.Value <= _ProgressBar.Maximum Then _Timer.Enabled =
True
End Sub
Private Sub ShowResult()
_ProgressBar.Increment(1)
End Sub
End Class
Bonne journée.
--
fmillox
"claudetom" a écrit :
> Pour l'animation de texte sur un afficheur epson (2 lignes 7 segments),
> J'ai réalisé un composant pour faire cela.
> L'animation des 2 lignes ce fait grace à 2 timers.
> Ca fonctionne bien mais un problème se pose !
> En effet quand l'animation est en route cela à pour effet de ralentir les
> actions sur la form parent.
> Donc ma question est :
> Est-il possible de réalisé les animations dans un thread séparé ?
> J'ai essayé plein de choses mais rien ne marche.
>
> Merci.
>
Rebonjour,
je précise que cet exemple ne gère que partiellement les exceptions. En
aucun cas, ce code est parfait :-)
Etant donné que ton exemple qui fontionne le mieux utilise les Timers, je
les ai utilisés aussi. Bien sûr, d'autre possibilités existent...
Bonne journée.
--
fmillox
"Millox Frédéric" a écrit :
> Bonjour,
>
> avec un peu de retard et en esperant que cela te serve à quelque chose, je
> t'ai fait une petite Form qui contient deux ProgressBars qui évoluent
> différemment dans le temps sans que l'interface en soit affectée :
>
> Public Class Form1
> Inherits System.Windows.Forms.Form
>
> Private Thread1 As System.Threading.Thread
> Private Thread2 As System.Threading.Thread
>
> #Region " Windows Form Designer generated code "
>
> Public Sub New()
> MyBase.New()
>
> 'This call is required by the Windows Form Designer.
> InitializeComponent()
>
> 'Add any initialization after the InitializeComponent() call
>
> End Sub
>
> 'Form overrides dispose to clean up the component list.
> Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
> If disposing Then
> If Not (components Is Nothing) Then
> components.Dispose()
> End If
> End If
> MyBase.Dispose(disposing)
> End Sub
>
> 'Required by the Windows Form Designer
> Private components As System.ComponentModel.IContainer
>
> 'NOTE: The following procedure is required by the Windows Form Designer
> 'It can be modified using the Windows Form Designer.
> 'Do not modify it using the code editor.
> Friend WithEvents ProgressBar1 As System.Windows.Forms.ProgressBar
> Friend WithEvents ProgressBar2 As System.Windows.Forms.ProgressBar
> <System.Diagnostics.DebuggerStepThrough()> Private Sub
> InitializeComponent()
> Me.ProgressBar1 = New System.Windows.Forms.ProgressBar
> Me.ProgressBar2 = New System.Windows.Forms.ProgressBar
> Me.SuspendLayout()
> '
> 'ProgressBar1
> '
> Me.ProgressBar1.Location = New System.Drawing.Point(16, 24)
> Me.ProgressBar1.Name = "ProgressBar1"
> Me.ProgressBar1.Size = New System.Drawing.Size(312, 23)
> Me.ProgressBar1.Step = 1
> Me.ProgressBar1.TabIndex = 0
> '
> 'ProgressBar2
> '
> Me.ProgressBar2.Location = New System.Drawing.Point(16, 88)
> Me.ProgressBar2.Name = "ProgressBar2"
> Me.ProgressBar2.Size = New System.Drawing.Size(312, 23)
> Me.ProgressBar2.Step = 1
> Me.ProgressBar2.TabIndex = 1
> '
> 'Form1
> '
> Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
> Me.ClientSize = New System.Drawing.Size(344, 149)
> Me.Controls.Add(Me.ProgressBar2)
> Me.Controls.Add(Me.ProgressBar1)
> Me.MaximumSize = New System.Drawing.Size(352, 176)
> Me.MinimumSize = New System.Drawing.Size(352, 176)
> Me.Name = "Form1"
> Me.Text = "Test"
> Me.ResumeLayout(False)
>
> End Sub
>
> #End Region
>
> Private Sub Form1_Load(ByVal sender As Object, ByVal e As
> System.EventArgs) Handles MyBase.Load
> Dim MyProgressBar1, MyProgressBar2 As MyProgressBar
>
> MyProgressBar1 = New MyProgressBar(Me, Me.ProgressBar1, 50)
> Thread1 = New System.Threading.Thread(AddressOf
> MyProgressBar1.BeginProgress)
> MyProgressBar2 = New MyProgressBar(Me, Me.ProgressBar2, 150)
> Thread2 = New System.Threading.Thread(AddressOf
> MyProgressBar2.BeginProgress)
>
> Thread1.Start()
> Thread2.Start()
> End Sub
> Private Sub Form1_Closing(ByVal sender As Object, ByVal e As
> System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
> Try
> Thread1.Abort()
> Catch ex As Exception
> '
> End Try
> Try
> Thread2.Abort()
> Catch ex As Exception
> '
> End Try
> End Sub
>
> End Class
>
> Public Class MyProgressBar
>
> Private Delegate Sub ProgressBarDelegate()
>
> Private _Timer As Timers.Timer
> Private _Form As System.Windows.Forms.Form
> Private _ProgressBar As ProgressBar
> Private _ProgressBarDelegateObj As ProgressBarDelegate
>
> Public Sub New(ByRef FormObj As System.Windows.Forms.Form, ByRef
> ProgressBarObj As ProgressBar, ByVal TimerInterval As Double)
> _Form = FormObj
> _ProgressBar = ProgressBarObj
> _Timer = New Timers.Timer
> _Timer.Interval = TimerInterval
> AddHandler _Timer.Elapsed, AddressOf TimerElapsed
> _ProgressBarDelegateObj = New ProgressBarDelegate(AddressOf
> ShowResult)
> End Sub
>
> Public Sub BeginProgress()
> _Timer.Enabled = True
> End Sub
> Private Sub TimerElapsed(ByVal sender As Object, ByVal e As
> System.Timers.ElapsedEventArgs)
> _Timer.Enabled = False
> _Form.Invoke(_ProgressBarDelegateObj)
> If _ProgressBar.Value <= _ProgressBar.Maximum Then _Timer.Enabled =
> True
> End Sub
> Private Sub ShowResult()
> _ProgressBar.Increment(1)
> End Sub
>
> End Class
>
> Bonne journée.
>
> --
> fmillox
>
>
> "claudetom" a écrit :
>
> > Pour l'animation de texte sur un afficheur epson (2 lignes 7 segments),
> > J'ai réalisé un composant pour faire cela.
> > L'animation des 2 lignes ce fait grace à 2 timers.
> > Ca fonctionne bien mais un problème se pose !
> > En effet quand l'animation est en route cela à pour effet de ralentir les
> > actions sur la form parent.
> > Donc ma question est :
> > Est-il possible de réalisé les animations dans un thread séparé ?
> > J'ai essayé plein de choses mais rien ne marche.
> >
> > Merci.
> >
Rebonjour,
je précise que cet exemple ne gère que partiellement les exceptions. En
aucun cas, ce code est parfait :-)
Etant donné que ton exemple qui fontionne le mieux utilise les Timers, je
les ai utilisés aussi. Bien sûr, d'autre possibilités existent...
Bonne journée.
--
fmillox
"Millox Frédéric" a écrit :
> Bonjour,
>
> avec un peu de retard et en esperant que cela te serve à quelque chose, je
> t'ai fait une petite Form qui contient deux ProgressBars qui évoluent
> différemment dans le temps sans que l'interface en soit affectée :
>
> Public Class Form1
> Inherits System.Windows.Forms.Form
>
> Private Thread1 As System.Threading.Thread
> Private Thread2 As System.Threading.Thread
>
> #Region " Windows Form Designer generated code "
>
> Public Sub New()
> MyBase.New()
>
> 'This call is required by the Windows Form Designer.
> InitializeComponent()
>
> 'Add any initialization after the InitializeComponent() call
>
> End Sub
>
> 'Form overrides dispose to clean up the component list.
> Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
> If disposing Then
> If Not (components Is Nothing) Then
> components.Dispose()
> End If
> End If
> MyBase.Dispose(disposing)
> End Sub
>
> 'Required by the Windows Form Designer
> Private components As System.ComponentModel.IContainer
>
> 'NOTE: The following procedure is required by the Windows Form Designer
> 'It can be modified using the Windows Form Designer.
> 'Do not modify it using the code editor.
> Friend WithEvents ProgressBar1 As System.Windows.Forms.ProgressBar
> Friend WithEvents ProgressBar2 As System.Windows.Forms.ProgressBar
> <System.Diagnostics.DebuggerStepThrough()> Private Sub
> InitializeComponent()
> Me.ProgressBar1 = New System.Windows.Forms.ProgressBar
> Me.ProgressBar2 = New System.Windows.Forms.ProgressBar
> Me.SuspendLayout()
> '
> 'ProgressBar1
> '
> Me.ProgressBar1.Location = New System.Drawing.Point(16, 24)
> Me.ProgressBar1.Name = "ProgressBar1"
> Me.ProgressBar1.Size = New System.Drawing.Size(312, 23)
> Me.ProgressBar1.Step = 1
> Me.ProgressBar1.TabIndex = 0
> '
> 'ProgressBar2
> '
> Me.ProgressBar2.Location = New System.Drawing.Point(16, 88)
> Me.ProgressBar2.Name = "ProgressBar2"
> Me.ProgressBar2.Size = New System.Drawing.Size(312, 23)
> Me.ProgressBar2.Step = 1
> Me.ProgressBar2.TabIndex = 1
> '
> 'Form1
> '
> Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
> Me.ClientSize = New System.Drawing.Size(344, 149)
> Me.Controls.Add(Me.ProgressBar2)
> Me.Controls.Add(Me.ProgressBar1)
> Me.MaximumSize = New System.Drawing.Size(352, 176)
> Me.MinimumSize = New System.Drawing.Size(352, 176)
> Me.Name = "Form1"
> Me.Text = "Test"
> Me.ResumeLayout(False)
>
> End Sub
>
> #End Region
>
> Private Sub Form1_Load(ByVal sender As Object, ByVal e As
> System.EventArgs) Handles MyBase.Load
> Dim MyProgressBar1, MyProgressBar2 As MyProgressBar
>
> MyProgressBar1 = New MyProgressBar(Me, Me.ProgressBar1, 50)
> Thread1 = New System.Threading.Thread(AddressOf
> MyProgressBar1.BeginProgress)
> MyProgressBar2 = New MyProgressBar(Me, Me.ProgressBar2, 150)
> Thread2 = New System.Threading.Thread(AddressOf
> MyProgressBar2.BeginProgress)
>
> Thread1.Start()
> Thread2.Start()
> End Sub
> Private Sub Form1_Closing(ByVal sender As Object, ByVal e As
> System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
> Try
> Thread1.Abort()
> Catch ex As Exception
> '
> End Try
> Try
> Thread2.Abort()
> Catch ex As Exception
> '
> End Try
> End Sub
>
> End Class
>
> Public Class MyProgressBar
>
> Private Delegate Sub ProgressBarDelegate()
>
> Private _Timer As Timers.Timer
> Private _Form As System.Windows.Forms.Form
> Private _ProgressBar As ProgressBar
> Private _ProgressBarDelegateObj As ProgressBarDelegate
>
> Public Sub New(ByRef FormObj As System.Windows.Forms.Form, ByRef
> ProgressBarObj As ProgressBar, ByVal TimerInterval As Double)
> _Form = FormObj
> _ProgressBar = ProgressBarObj
> _Timer = New Timers.Timer
> _Timer.Interval = TimerInterval
> AddHandler _Timer.Elapsed, AddressOf TimerElapsed
> _ProgressBarDelegateObj = New ProgressBarDelegate(AddressOf
> ShowResult)
> End Sub
>
> Public Sub BeginProgress()
> _Timer.Enabled = True
> End Sub
> Private Sub TimerElapsed(ByVal sender As Object, ByVal e As
> System.Timers.ElapsedEventArgs)
> _Timer.Enabled = False
> _Form.Invoke(_ProgressBarDelegateObj)
> If _ProgressBar.Value <= _ProgressBar.Maximum Then _Timer.Enabled =
> True
> End Sub
> Private Sub ShowResult()
> _ProgressBar.Increment(1)
> End Sub
>
> End Class
>
> Bonne journée.
>
> --
> fmillox
>
>
> "claudetom" a écrit :
>
> > Pour l'animation de texte sur un afficheur epson (2 lignes 7 segments),
> > J'ai réalisé un composant pour faire cela.
> > L'animation des 2 lignes ce fait grace à 2 timers.
> > Ca fonctionne bien mais un problème se pose !
> > En effet quand l'animation est en route cela à pour effet de ralentir les
> > actions sur la form parent.
> > Donc ma question est :
> > Est-il possible de réalisé les animations dans un thread séparé ?
> > J'ai essayé plein de choses mais rien ne marche.
> >
> > Merci.
> >
Rebonjour,
je précise que cet exemple ne gère que partiellement les exceptions. En
aucun cas, ce code est parfait :-)
Etant donné que ton exemple qui fontionne le mieux utilise les Timers, je
les ai utilisés aussi. Bien sûr, d'autre possibilités existent...
Bonne journée.
--
fmillox
"Millox Frédéric" a écrit :
> Bonjour,
>
> avec un peu de retard et en esperant que cela te serve à quelque chose, je
> t'ai fait une petite Form qui contient deux ProgressBars qui évoluent
> différemment dans le temps sans que l'interface en soit affectée :
>
> Public Class Form1
> Inherits System.Windows.Forms.Form
>
> Private Thread1 As System.Threading.Thread
> Private Thread2 As System.Threading.Thread
>
> #Region " Windows Form Designer generated code "
>
> Public Sub New()
> MyBase.New()
>
> 'This call is required by the Windows Form Designer.
> InitializeComponent()
>
> 'Add any initialization after the InitializeComponent() call
>
> End Sub
>
> 'Form overrides dispose to clean up the component list.
> Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
> If disposing Then
> If Not (components Is Nothing) Then
> components.Dispose()
> End If
> End If
> MyBase.Dispose(disposing)
> End Sub
>
> 'Required by the Windows Form Designer
> Private components As System.ComponentModel.IContainer
>
> 'NOTE: The following procedure is required by the Windows Form Designer
> 'It can be modified using the Windows Form Designer.
> 'Do not modify it using the code editor.
> Friend WithEvents ProgressBar1 As System.Windows.Forms.ProgressBar
> Friend WithEvents ProgressBar2 As System.Windows.Forms.ProgressBar
> <System.Diagnostics.DebuggerStepThrough()> Private Sub
> InitializeComponent()
> Me.ProgressBar1 = New System.Windows.Forms.ProgressBar
> Me.ProgressBar2 = New System.Windows.Forms.ProgressBar
> Me.SuspendLayout()
> '
> 'ProgressBar1
> '
> Me.ProgressBar1.Location = New System.Drawing.Point(16, 24)
> Me.ProgressBar1.Name = "ProgressBar1"
> Me.ProgressBar1.Size = New System.Drawing.Size(312, 23)
> Me.ProgressBar1.Step = 1
> Me.ProgressBar1.TabIndex = 0
> '
> 'ProgressBar2
> '
> Me.ProgressBar2.Location = New System.Drawing.Point(16, 88)
> Me.ProgressBar2.Name = "ProgressBar2"
> Me.ProgressBar2.Size = New System.Drawing.Size(312, 23)
> Me.ProgressBar2.Step = 1
> Me.ProgressBar2.TabIndex = 1
> '
> 'Form1
> '
> Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
> Me.ClientSize = New System.Drawing.Size(344, 149)
> Me.Controls.Add(Me.ProgressBar2)
> Me.Controls.Add(Me.ProgressBar1)
> Me.MaximumSize = New System.Drawing.Size(352, 176)
> Me.MinimumSize = New System.Drawing.Size(352, 176)
> Me.Name = "Form1"
> Me.Text = "Test"
> Me.ResumeLayout(False)
>
> End Sub
>
> #End Region
>
> Private Sub Form1_Load(ByVal sender As Object, ByVal e As
> System.EventArgs) Handles MyBase.Load
> Dim MyProgressBar1, MyProgressBar2 As MyProgressBar
>
> MyProgressBar1 = New MyProgressBar(Me, Me.ProgressBar1, 50)
> Thread1 = New System.Threading.Thread(AddressOf
> MyProgressBar1.BeginProgress)
> MyProgressBar2 = New MyProgressBar(Me, Me.ProgressBar2, 150)
> Thread2 = New System.Threading.Thread(AddressOf
> MyProgressBar2.BeginProgress)
>
> Thread1.Start()
> Thread2.Start()
> End Sub
> Private Sub Form1_Closing(ByVal sender As Object, ByVal e As
> System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
> Try
> Thread1.Abort()
> Catch ex As Exception
> '
> End Try
> Try
> Thread2.Abort()
> Catch ex As Exception
> '
> End Try
> End Sub
>
> End Class
>
> Public Class MyProgressBar
>
> Private Delegate Sub ProgressBarDelegate()
>
> Private _Timer As Timers.Timer
> Private _Form As System.Windows.Forms.Form
> Private _ProgressBar As ProgressBar
> Private _ProgressBarDelegateObj As ProgressBarDelegate
>
> Public Sub New(ByRef FormObj As System.Windows.Forms.Form, ByRef
> ProgressBarObj As ProgressBar, ByVal TimerInterval As Double)
> _Form = FormObj
> _ProgressBar = ProgressBarObj
> _Timer = New Timers.Timer
> _Timer.Interval = TimerInterval
> AddHandler _Timer.Elapsed, AddressOf TimerElapsed
> _ProgressBarDelegateObj = New ProgressBarDelegate(AddressOf
> ShowResult)
> End Sub
>
> Public Sub BeginProgress()
> _Timer.Enabled = True
> End Sub
> Private Sub TimerElapsed(ByVal sender As Object, ByVal e As
> System.Timers.ElapsedEventArgs)
> _Timer.Enabled = False
> _Form.Invoke(_ProgressBarDelegateObj)
> If _ProgressBar.Value <= _ProgressBar.Maximum Then _Timer.Enabled =
> True
> End Sub
> Private Sub ShowResult()
> _ProgressBar.Increment(1)
> End Sub
>
> End Class
>
> Bonne journée.
>
> --
> fmillox
>
>
> "claudetom" a écrit :
>
> > Pour l'animation de texte sur un afficheur epson (2 lignes 7 segments),
> > J'ai réalisé un composant pour faire cela.
> > L'animation des 2 lignes ce fait grace à 2 timers.
> > Ca fonctionne bien mais un problème se pose !
> > En effet quand l'animation est en route cela à pour effet de ralentir les
> > actions sur la form parent.
> > Donc ma question est :
> > Est-il possible de réalisé les animations dans un thread séparé ?
> > J'ai essayé plein de choses mais rien ne marche.
> >
> > Merci.
> >