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 :
Avant d'envoyer, je regarde si le BGW est occupé, si oui, je demande l'arrêt de celui-ci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Dans mon DoWork :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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!
Partager