Bonjour,
J'essai de faire un operation multithreads pour accelerer mes opérations dans un environnement non bloquante.
Lors de l'ouverture du formulaire je créer un dataset avec une table "Echantillon", ensuite je démarre plusieurs thread qui me permettent d'analyser mon échantillon.
Le code aurait besoin d'amélioration et j'apprécierais vos suggestions
car j'ai plusieurs messages d'erreurs qui se manifestent ici et la
il y a en autre
La collection a été modifiée*; l'opération d'énumération peut ne pas s'exécuter.
La référence d'objet n'est pas définie à une instance d'un objet.
DataTable appartient déjà à ce DataSet.
merci de votre aide
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 Private Sub DemarrerToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DemarrerToolStripMenuItem.Click For i = 0 To 5 Dim T As New Threading.Thread(AddressOf DoTheTask) T.Name = "Threads#" & i.ToString T.Start() Next End Sub Sub DoTheTask() 'boucle pour modifier les critères d'analyses Do Until QuSymbole.Count = 0 Dim Symb As String = QuSymbole.Dequeue Dim Expression As String = "Symbole='" & Symb & "'" Dim FoundRow() As DataRow FoundRow = ODTEchantillon.Select(Expression) ODTDonnee = New DataTable("" & Symb & "") 'Importation des lignes de l'expresssion For Each r As DataRow In FoundRow Try If Not IsDBNull(r) Then ODTDonnee.ImportRow(r) End If Catch ex As Exception 'Si erreur ajoute à la queue le symb non executé Console.WriteLine(Symb & " Message erreur " & ex.Message) QuSymbole.Enqueue(Symb) End Try Next ObjDataSet.Tables.Add(ODTDonnee) Console.WriteLine(ObjDataSet.Tables.Count.ToString) Console.WriteLine("Le thread {0} execute le symbole {1} dans le datatable {2} avec {3} données dedans", Thread.CurrentThread.Name, Symb, ODTDonnee.TableName, ODTDonnee.Rows.Count.ToString) ODTDonnee.Clear() ODTDonnee = Nothing Loop Console.WriteLine(ObjDataSet.Tables.Count.ToString) End Sub
Partager