Bonjour a tous,
j'ai un souci avec l'instruction sqlbulkcopy. Quand je selection un fichier ayant un nombre de ligne pas important l'affichage s'effectu.
Le probleme quand je veux importer plus 1000 lignes cela m'affiche un message qui suit:
Le CLR n'a pas pu effectuer de transition du contexte COM 0x8916c8 au contexte COM 0x891838 pendant 60 secondes. Le thread qui possède le contexte/cloisonnement de destination est probablement en train d'attendre ou de traiter une opération très longue sans pompage des messages Windows. Cette situation a généralement des effets négatifs sur les performances et peut parfois entraîner le blocage de l'application ou une utilisation ininterrompue de la mémoire. Pour éviter ce problème, tous les threads STA (Single Threaded Apartment) doivent utiliser des primitives d'attente de pompage (par exemple CoWaitForMultipleHandles) et pomper de manière régulière les messages lors des opérations qui sont longues à s'exécuter.
Esperant avoir une suite favorable.
Merci de m'aider

Voila mon code qui va chercher les données pour les afficher dans mon datagridview.


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
55
 
    Private Sub Selection()
 
        Try
            Dim cb As New SqlConnectionStringBuilder
            cb.DataSource = "EVENS"
            cb.InitialCatalog = "KOTINDA_DB"
            cb.IntegratedSecurity = True
            Dim cnn As SqlConnection = New SqlConnection(cb.ConnectionString)
 
            '----// Source de données
            Dim cmd As SqlCommand = New SqlCommand("SELECT * FROM TEMPORAIRE WHERE num_tel NOT IN ( SELECT msisdn_sub FROM BLACK_LIST )", cnn)
            cnn.Open()
            'Dim rdr As SqlDataReader
            Reader = cmd.ExecuteReader
 
            'Nombre de colonnes dans le datagridview
            Me.dgvNumber.ColumnCount = (Reader.FieldCount)
            'Declaration des lines et des differentes cellulesj
            Dim ligne As DataGridViewRow
            Dim cel As DataGridViewTextBoxCell 'Cellule pour les données
            'lecture des données
            While Reader.Read
                ligne = New DataGridViewRow
                'lecture des données dans le reader
                For i As Integer = 0 To Reader.FieldCount - 1
                    'initialisation des cellules pour les données
                    cel = New DataGridViewTextBoxCell
                    'test si il ya des données
                    If Not Reader.GetValue(i) Is Nothing Then
                        'donne une valuer à la cellule de données
                        cel.Value = Reader(i)
                    End If
                    'ajoutez la cellule avec les données à la ligne
                    ligne.Cells.Add(cel)
                Next i
                'ajoutez la ligne dans le datagridview
                dgvNumber.Rows.Add(ligne)
                'Delete()
            End While
 
            '----// Instanciation de l'objet sqlbulkcopy
            Dim sbc As SqlBulkCopy = New SqlBulkCopy("server=.;database=KOTINDA_DB;" + "Integrated Security=TRUE")
 
            '----// copie des données
            sbc.DestinationTableName = "TEMPORAIRE"
            sbc.WriteToServer(Reader)
 
            '----Fermeture de la connection
            sbc.Close()
            Reader.Close()
            cnn.Close()
            Catch ex As Exception
            MsgBox(ex.Message)
        End Try