Hallo zusammen!
Ich benutze einen Backgroundworker um im Hintergrund einen Chipleser abzufragen. Das funktioniert auch wunderbar, allerdings läuft die Abfrage immer nur einmal durch, ich möchte den Leser aber ständig abfragen solange Form1 aktiv ist.
Wie im Quellcode zu sehen habe ich dafür eine While schleife + Abbruch Bedingung eingebaut, diese funktioniert ebenfalls, allerdings wird meine RunWorker_Completed Prozedur nicht aufgerufen und mir ist im Moment nicht ganz klar, woran das liegt.
Ich muss gestehen, dass ich nicht viel Ahnung von VB habe, wahrscheinlich ist das Problem ziemlich einfach und ich sehe es nur nicht. Auf jeden Fall bin ich für jede Hilfe dankbar.
Wenn ich die While Schleife rausnehme und der Thread ganz normal bis zum Ende durchläuft funktioniert es, ich glaube deshalb, dass es an dem Cancel Befehl liegt. Allerdings sollte die Prozedur doch auch bei einem Abbruch aufgerufen werden, oder sehe ich das jetzt falsch?
Ich benutze einen Backgroundworker um im Hintergrund einen Chipleser abzufragen. Das funktioniert auch wunderbar, allerdings läuft die Abfrage immer nur einmal durch, ich möchte den Leser aber ständig abfragen solange Form1 aktiv ist.
Wie im Quellcode zu sehen habe ich dafür eine While schleife + Abbruch Bedingung eingebaut, diese funktioniert ebenfalls, allerdings wird meine RunWorker_Completed Prozedur nicht aufgerufen und mir ist im Moment nicht ganz klar, woran das liegt.
Ich muss gestehen, dass ich nicht viel Ahnung von VB habe, wahrscheinlich ist das Problem ziemlich einfach und ich sehe es nur nicht. Auf jeden Fall bin ich für jede Hilfe dankbar.
VB.NET-Quellcode
- Public Sub bgthread_DoWork( _ByVal sender As Object, _
- ByVal e As System.ComponentModel.DoWorkEventArgs) _Handles bgthread.DoWork
- While bgthread.IsBusy
- customerNumber = 0
- status = getMC(2, customerNumber)
- If status = 0 Then
- bgthread.CancelAsync()
- End If
- End While
- End Sub
- Public Sub bgthread_RunWorkerCompleted( _ByVal sender As Object, _
- ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) _ Handles bgthread.RunWorkerCompleted
- MsgBox(customerNumber, vbOKOnly)
- If Not customerNumber = 0 Then
- Form2.box_ID.Text = customerNumber
- hooter_if(10, 2)
- Form2.box_Gericht.Text = "Salat"
- customerNumber = 0
- Form2.Show()Call Form2.acceptinfo()
- Else
- End If
- End Sub
Wenn ich die While Schleife rausnehme und der Thread ganz normal bis zum Ende durchläuft funktioniert es, ich glaube deshalb, dass es an dem Cancel Befehl liegt. Allerdings sollte die Prozedur doch auch bei einem Abbruch aufgerufen werden, oder sehe ich das jetzt falsch?