IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Problème à la fin du traitement d'un backgroundworker


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 91
    Par défaut Problème à la fin du traitement d'un backgroundworker
    Bonsoir,

    Je débute dans l'utilisation des backgroundworker et j'ai un soucis,

    mon backgroundworker charge des données dans une datagridview pour que le chargement soit fluide et synchronisé,

    pour ceci j'ai triché en utilisant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Control.CheckForIllegalCrossThreadCalls = False
    pour autoriser un thread à accéder a un autre,

    Mon soucis est le suivant, une fois les données chargés l'interface ne répond plus, j'ai essayé de faire dispose pour libérer les ressource ou j'ai mis une msgbox pour voir si je terminais bien ma boucle et je la termine mais après plus rien

    Donc je cherche une solution pour pouvoir attacher ma datagridview a mon backgroundworker ou sinon a ce que ma fenetre ne se freeze plus

    mon code :
    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
     
      Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
     
            Dim j As Integer
            MsgBox(finfin)
            For j = debut.Text To finfin - 1
                'Threading.Thread.Sleep(50)
                Try
                    My.Computer.Network.DownloadFile(chaine & j & TextBox2.Text, My.Application.Info.DirectoryPath & "temp/Data" & j & ".txt")
     
                    Dim Flux As New StreamReader(My.Application.Info.DirectoryPath & "temp/Data" & j & ".txt", False)
                    Dim resultat As String = Flux.ReadToEnd
                    Flux.Close()
     
                    Dim index1, index2 As Integer
                    index1 = resultat.IndexOf("<leet>", 0)
                    index2 = resultat.IndexOf("</leet>", index1 + 1)
                    DGVdata.Rows.Add(resultat.Substring(index1 + 6, index2 - index1 - 6))
                    File.Delete(My.Application.Info.DirectoryPath & "temp/Data" & j & ".txt")
                Catch ex As Exception
                    'MsgBox(ex.ToString)
                    DGVdata.Rows.Add("Impossible")
                End Try
            Next
            MsgBox("fini")
     
    End sub

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    sauf que quand on va dans l'aide msdn, microsoft précise bien que CheckForIllegalCrossThreadCalls ne doit etre utilisé qu'à des fin de debuggage, car il peut rendre instable une appli ...

    donc ne triche pas avec ca et utilise un délégué
    tu peux mettre tes données dans un objet non graphique pour ensuite mettre cet objet dans le datagridview (plutot que de mettre les données au fur et à mesure dedans)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 91
    Par défaut
    Citation Envoyé par sperot51 Voir le message
    sauf que quand on va dans l'aide msdn, microsoft précise bien que CheckForIllegalCrossThreadCalls ne doit etre utilisé qu'à des fin de debuggage, car il peut rendre instable une appli ...

    donc ne triche pas avec ca et utilise un délégué
    tu peux mettre tes données dans un objet non graphique pour ensuite mettre cet objet dans le datagridview (plutot que de mettre les données au fur et à mesure dedans)
    Merci bien j'ai réussi finalement avec un délégué :
    http://plasserre.developpez.com/cour...ws-forms5#LX-R

    Il faut lire les thread pour comprendre qu'en faite les variable qu'on créer dans notre programme principale peuvent être récupérer par des threads, mais pas les controles

    après coup le tutorial au même endroit m'a aidé a faire mon premier délégué

    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHPMailer] Problème de durée de traitement
    Par arno_ dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 20/04/2007, 16h53
  2. Réponses: 3
    Dernier message: 20/04/2007, 12h19
  3. Problème entre affichage et traitement d'un string
    Par leneuf dans le forum Langage
    Réponses: 4
    Dernier message: 10/10/2006, 18h27
  4. [ANTLR]Problème de fin de fichier
    Par anitshka dans le forum EDI et Outils pour Java
    Réponses: 6
    Dernier message: 04/09/2006, 14h53
  5. Delete cascade --> problème de temps de traitement
    Par celine31 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 11/01/2006, 12h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo