Moin,
ich hab ein Problem mit meinem Timer
und zwar berechne ich etwas über einen Backgroundworker welcher dann immer eine progressbar auf einem wait_form aktualisiert. Das funktioniert auch soweit. Jetzt wollte ich noch eine "verbleibende Zeit" information wiedergeben.
Da ich nicht genau weis wie lange jeder loop der brechnungsschleife dauert habe ich mir gedacht ich messe einfach die zeit jedes mal und reche das dann auf die noch bevorstehenden zyklen hoch.
hier mein ansatz:
das problem an der geschichte ist, dass das Label nicht aktualisiert wird ... hab ich da einen denkfehler ?
ich hab ein Problem mit meinem Timer
und zwar berechne ich etwas über einen Backgroundworker welcher dann immer eine progressbar auf einem wait_form aktualisiert. Das funktioniert auch soweit. Jetzt wollte ich noch eine "verbleibende Zeit" information wiedergeben.
Da ich nicht genau weis wie lange jeder loop der brechnungsschleife dauert habe ich mir gedacht ich messe einfach die zeit jedes mal und reche das dann auf die noch bevorstehenden zyklen hoch.
hier mein ansatz:
VB.NET-Quellcode
- Public Sub calc_ProgressChanged(ByVal sender As System.Object, ByVal e As ProgressChangedEventArgs) Handles calc.ProgressChanged
- Dim parts As String()
- Select Case e.UserState
- Case "Fractions ermitteln ..."
- prgbar_wait.Style = ProgressBarStyle.Marquee
- stlabel_wait.Text = e.UserState
- Case "Marker setzen ..."
- prgbar_wait.Style = ProgressBarStyle.Marquee
- stlabel_wait.Text = e.UserState
- Case "Analysieren ..."
- timer1.Interval = 1000
- AddHandler timer1.Tick, AddressOf timer1_Tick
- timer1.Enabled = True
- timer1.Start()
- prgbar_wait.Style = ProgressBarStyle.Marquee
- stlabel_wait.Text = e.UserState
- stlabel_time.Visible = True
- Case Else
- prgbar_wait.Style = ProgressBarStyle.Continuous
- prgbar_wait.Value = e.ProgressPercentage
- parts = Split(e.UserState, "#")
- stlabel_wait.Text = "Fraction " & parts(0) & " / " & parts(1)
- If Not temp_date.Year <> 1800 Then
- span = Now().Subtract(temp_date)
- span.Add(New TimeSpan(span.Ticks * (parts(1) - parts(0))))
- End If
- temp_date = Now
- End Select
- End Sub
VB.NET-Quellcode
- Friend WithEvents prgbar_wait As System.Windows.Forms.ProgressBar = frm_wait.pgr1_status
- Friend WithEvents stlabel_wait As System.Windows.Forms.Label = frm_wait.lbl_status
- Friend WithEvents stlabel_time As System.Windows.Forms.Label = frm_wait.lbl_time
- Friend WithEvents calc As System.ComponentModel.BackgroundWorker
- Friend WithEvents calc_all_files As List(Of source_File) = functions.all_files
- Friend WithEvents calc_messurements As List(Of mes_group) = functions.messurements
das problem an der geschichte ist, dass das Label nicht aktualisiert wird ... hab ich da einen denkfehler ?