none
Problème avec le BackgroundWorker RRS feed

  • Question

  • Bonjour

    J'ai mis le background worker sur la form1, il appelle une sub dans un module ou une classe et cette classe va chercher de l'information dans les bases de données sur la form2 et la form1 mais ça ne fonctionne pas

    pourquoi je passe par une classe et un module et pourquoi il va chercher l'infos sur form2 c,est parce que j'ai énormément de code et j'ai alléger tout ça en dispatchant mes choses dans des classes et sur d'autre forms

    j'ai alors fait un petit programme en 20 minutes pour m'assurer que ce n'était pas mon code et ça ne fonctionne pas non plus..

    je vous mets la structure de mon petit programme test :

    Class Form1
    
    private sub BackgroundWorker.runwork
    
    
                ' Du code
    
                module1.allerChercherDeLinfo()
    
                ' D'autre codes
    
    
            End Sub
    
    
        End Class
    
    
    
    _________________________________
    
        Class Module1
    
            'Du code
    
            Public Sub allerChercherDeLinfo()
    
                'ca ne marche pas
    if form2.dataset.row(x).item(y) = Quelque chose Then
    
                End If
    
    
            End Sub
    
            'D'autre code
    
    
        End Class


    où est-ce que j'ai écrit ça ne marche pas.. c'est là le problème avec le background worker

    merci à l'avance!! 


    La vie est belle!


    mercredi 17 août 2016 14:20

Réponses

  • Bonjour Peter_ZZZZZ,

    Veuillez consulter le thread suivant :
    Correct way to use the BackgroundWorker
    Je vous remercie par avance de votre retour.

    Cordialement,
    Teodora


    Votez! Appel à la contribution TechNet Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    • Marqué comme réponse Peter_ZZZZZ jeudi 18 août 2016 20:29
    jeudi 18 août 2016 13:32
    Modérateur

Toutes les réponses

  • Bonjour Peter_ZZZZZ,

    Veuillez consulter le thread suivant :
    Correct way to use the BackgroundWorker
    Je vous remercie par avance de votre retour.

    Cordialement,
    Teodora


    Votez! Appel à la contribution TechNet Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    • Marqué comme réponse Peter_ZZZZZ jeudi 18 août 2016 20:29
    jeudi 18 août 2016 13:32
    Modérateur
  • Salut Teodora

    Merci pour la réponse

    Il est donc clair que mon code est BEAUCOUP trop compliqué pour utiliser le background worker!

    Merci

    On m'a parlé de async, je l'avais essayé et ça ne fonctionnait pas en parallèle avec le reste du code mais p-ê que tu auras un thread bien expliquer comme celui du backgroundworker pour ça!?  : ) : )

    Pierre

    Je viens de lire sur async et les explications sont fait pour du petit code... p-être du petit code qui pourrait bloquer le programme mais quand même.. si vous avez une référence.. ce serait bien que cette référence s'adapte à mon exemple ci-haut incluant le fait qu'il y aura une vingtainte de sub.. des sub qui appelle d'autres sub, sur form1 à form5, des msgbox, des boutons, des labels, etc... 

    j'ai besoin de quelque chose qui fonctionne en parallèle pour des pages et des pages de codes : )

    Merci


    La vie est belle!


    jeudi 18 août 2016 20:30
  • Bonjour Peter_ZZZZZ,

    Avez-vous défini Option Strict On ?

    Il y a de l’information utile dans le thread en bas:
    Access cell value of datatable

    if form2.dataset.row(x).item(y) = Quelque chose Then
    
                End If

    Il faut que vous accédiez à la table de données du DataSet avant d’accéder à la ligne et à la colonne:

    if form2.dataset.Tables(0).Rows(x).ItemArray(y).ToString() = Quelque_chose Then
    
    End If

    Cordialement,
    Dimitar

    lundi 22 août 2016 13:11
    Administrateur
  • Salut Dimitar

    je n'arrive pas à reproduire ton code!!

    voici mon code qui fonctionne non pas avec le background worker mais pour le correction automatique de visual basic:

     If Form2.Database1DataSet.a.Rows(0).ItemArray(0).ToString() = "5" Then
    
                Form1.Label1.Text = "ok"
    
    End If

    pourrais-tu réécrire ton code avec mes mots parce que peu importe ce que j'essaie avec le : 

    [ 0 ]

    ca ne fonctionne pas j'ai essayé plusieurs façon

    merci!!


    La vie est belle!


    • Modifié Peter_ZZZZZ lundi 22 août 2016 14:41 j'ai oublié de clicker sur m'avertir mais il n'est plus là lorsqu'on modifie
    lundi 22 août 2016 14:40
  • BonjourPeter_ZZZZZ,

    Tables(0) est la table de données du DataSet. Dans votre DataSet, c’est bien a (d’après le dernier extrait de code) mais elle n’était pas discernable dans le code du premier message.

    Cordialement,
    Dimitar

    mardi 23 août 2016 06:23
    Administrateur
  • Bonjour

    Oui je me doute bien que vous ne pouviez pas inventer des noms de tables sans les connaître loll

    Voici alors ce que j'écris mais ça ne fonctionne pas :

    form2.Database1DataSet.a[0].Rows(x).ItemArray(y).ToString()

    il souligne du début jusqu'à  [0] et écrit : impossible de convertir une donnée de type dataset.aDataTable en boolean

    Lorsque j'enlève le [0], tout est correcte mais le programme ne fonctionne pas comme au début de la question de ce post, il dit comme d'habitude.. pas de ligne à la position 0 parce que le module est appelé d'un background worker... en fait la logique dit ça puisque lorsque j'ai le même code ailleurs que dans un background worker.. tout fonctionne!


    La vie est belle!

    mardi 23 août 2016 11:37
  • et comment fais-je pour mettre option strict à on.. s'il vous plaît. Merci ; )

    La vie est belle!

    mardi 23 août 2016 11:41
  • Bonjour Peter_ZZZZZ,

    Vous n’avez pas besoin du 0, parce que « a » est le nom de la table de données et vous n’accédez pas au premier élément de la DataTableCollection dans le DataSet (je viens de corriger les parenthèses conformément au syntaxe de VB). Je voulais juste souligner que Rows est une propriété de la table de données et non du DataSet mais de votre dernier extrait de code je conclus que vous en avez déjà tenu compte.

    et comment fais-je pour mettre option strict à on.

    Ce paramètre peut être configuré dans les propriétés du projet -> Compiler -> Option Strict.

    Cordialement,
    Dimitar

    jeudi 25 août 2016 09:01
    Administrateur
  • Salut

    Merci pour ton aide

    Malheureusement ça ne fonctionne pas!!

    Si vous désirez m'aider encore.. il faudra prendre mon problème ci-haut et le faire en 20 minutes.. pour vous rendre compte des problématique associées!!  : )

    Merci beaucoup!!! 

    A+ p-ê


    La vie est belle!

    vendredi 26 août 2016 15:32