Bonjour à tous,
J'essaye d’utiliser l'outil BackgroundWorker1 mais je rencontre les erreurs suivantes :
Pour le contrôle : Openfile dialogue :
Pour le contrôle datagridview :Une exception de type 'System.Threading.ThreadStateException' s'est produite dans System.Windows.Forms.dll mais n'a pas été gérée dans le code utilisateur
Le thread actuel doit être en mode STA (Single Thread Apartment) avant que des appels OLE puissent être effectués. Assurez-vous que votre fonction Main est marquée comme STAThreadAttribute. Cette exception n'est déclenchée que si un débogueur est attaché au processus.
Une exception de type 'System.InvalidOperationException' s'est produite dans System.Windows.Forms.dll mais n'a pas été gérée dans le code utilisateur
Informations supplémentaires : Opération inter-threads non valide : le contrôle 'DataGridView1' a fait l'objet d'un accès à partir d'un thread autre que celui sur lequel il a été créé.
Tout cela avec ce bout de code qui charge un fichier texte avec deux colonnes séparées par ":"
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 Private Sub BackgroundWorker1_DoWork(sender As Object, e As ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork Try Dim Separator = ToolStripTextBox1.Text Dim filename As String OpenFileDialog1.ShowDialog() filename = OpenFileDialog1.FileName Dim sr As New IO.StreamReader("C:\Users\PC- TOSHIBA\Desktop\TEST.txt") Dim dt As New DataTable Dim newline() As String = sr.ReadLine.Split(Separator) dt.Columns.AddRange({New DataColumn("Identifiant"), New DataColumn("REF"), New DataColumn("Fournisseur")}) While (Not sr.EndOfStream) newline = sr.ReadLine.Split(Separator) Dim newrow As DataRow = dt.NewRow Try Dim Fournisseur() As String = Split(newline(0), "@") newrow.ItemArray = {newline(0), newline(1), Fournisseur(1)} dt.Rows.Add(newrow) Catch ex As Exception End Try End While DataGridView1.DataSource = dt Catch ex As Exception 'MsgBox("Une erreur a été levée, vérifier que le fichier soit au bon format : 2 colonnes---> [mail : réf], le séparateur est modifiable dans le menu") Exit Sub End Try Label1.Text = "Enregistements : " & DataGridView1.RowCount End Sub
Merci pour votre aide
Partager