Arrêt du BackGroundWorker
Bonjour à tous,
j'ai cherché des solutions à mon problème, mais elles ne me semble pas adaptées.
L'envoie de 2Ko de données sur le SerialPort étant lourd, j'ai décidé de faire un BGW pour garder la main sur l'application. J'enverrai les données puis attendrais que l'on demande l'arrêt du BGW. (J'ai testé de mettre la commande d'arrêt dans un RunWorkerCompleted, mais ça ne marche pas..)
Seulement, je coince à l'arrêt du BGW :
Dans mon thread principal, j'ai codé quelques lignes :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| For i = 1 To 2
FlagBGK = False
If BackgroundWorker1.IsBusy Then
BackgroundWorker1.CancelAsync()
BackgroundWorker1.Dispose()
End If
BackgroundWorker1.RunWorkerAsync(tbl(i))
While (FlagBGK = False)
End While
Next |
Avant d'envoyer, je regarde si le BGW est occupé, si oui, je demande l'arrêt de celui-ci.
Dans mon DoWork :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Dim worker As BackgroundWorker = CType(sender, BackgroundWorker)
WriteRS232(CStr(e.Argument))
FlagBGK = True
While (True)
If worker.CancellationPending Then
e.Cancel = True
Exit Sub
End If
End While
End Sub |
Lorsque je demande l'arrêt du BGW, je passe bien dans les instructions "e.Cancel" et "Exit Sub".
Pourtant, à la sortie, si je regarde si mon BGW.IsBusy, j'ai un true.
Quelqu'un sait pourquoi?
Merci d'avance de votre aide!