Forum: PC-Programmierung [vb.net] Timer in BackgroundWorker ausführen


von aked (Gast)


Lesenswert?

Hi, ich habe einen Timer mit relativ langem Code. Dieser muss relativ 
zeitgleich mit dem öffnen eines SerialPorts gestartet werden. Durch den 
langen Code friert aber die UI kurz ein, wenn ich in Form.Load den Timer 
starte.

Nun habe ich einen BackgroundWorker erstellt, welcher beim Start der 
Anwendung aufgerufen wird:
1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
2
3
If BackgroundWorker1.IsBusy Then
4
Return
5
End If
6
BackgroundWorker1.RunWorkerAsync()
7
8
End Sub

und im BackgroundWorker wird der Timer gestartet:
1
  Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
2
        Timer1.Start()
3
4
    End Sub

Der Timer wird auch gestartet, das hab ich über ein Label mit
1
 If Timer1.enabled = true
 etc. getestet.

Aber der Code im Timer wird nicht ausgeführt. Dieser verarbeitet Daten 
vom SerialPort und soll an diesen senden, es wird aber nichts gesendet.

Kann mir jemand einen Tip geben?

Danke

von Schlaumaier (Gast)


Lesenswert?

Unter VB musst du eine Sub für den Timer machen.

Private Sub TimerEventProcessor(myObject As Object, ByVal myEventArgs As 
EventArgs) Handles my_Timer.Tick

' mach was.


end sub

Das sollte unter NET ähnlich sein.

Diese SUB wird bei Timer automatisch ausgelöst

Sub Timer_auslosen ()
 my_Timer.Interval = 1000
 my_Timer.Enabled = True
end sub



my_timer ist das Timer_objekt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.