none
Faire fonctionner 2 code en même temps RRS feed

  • Question

  • Bonjour

    Au début de mon programme... je fait une recherche très longue.. 10 secondes environ et durant l'utilisation du programme cette recherche se fait encore et encore à tous les X temps...

    Quand ça arrive.. le programme empêche l'utilisateur d'écrire durant quelque seconde

    J'aimerais savoir comment faire pour exécuter du code en même temps que d'autre code ou si cela est impossible et que la procédure c'est toujours d'entendre qu'un code soit fini pour qu'un autre s'exécute?

    Merci de me répondre!

    Pierre


    La vie est belle!

    mercredi 3 août 2016 13:32

Réponses

  • Il y a plusieurs façon de faire, et les choix dépendent un peu de ce que la recherche fait.

    Avez-vous regardé les méthodes Async et Await?

    regardez les explications msdn ici: https://msdn.microsoft.com/en-us/library/mt674902.aspx

    • Marqué comme réponse Peter_ZZZZZ mercredi 17 août 2016 18:41
    mercredi 3 août 2016 13:35
  • Bonjour,

    Vous pouvez utiliser les méthodes async et await, ou encore utiliser un backgroundworker ou des threads. Mais dans tous les cas si l'utilisateur écrit dans un contrôle ou votre procédure threadée veut écrire il vous faudra attendre de toute façon, les contrôles graphiques ont leur propre thread. Il faut donc bien attendre. Après cela dépend dans quoi vous programmez (ASP.net, WPF, Winform) Une solution serait que l'utilisateur écrive dans un control (textbox ou autre) et valide sa saisie (bouton, appuie sur enter etc) ce qui écrirait dans un file d'attente, idem pour votre procédure threadée. Un autre thread serait en charge d'afficher le contenu de cette file d'attente dans un autre control indépendant (voir MDI, ou autre fenêtre)

    • Proposé comme réponse Johnny Grun lundi 15 août 2016 15:09
    • Marqué comme réponse Peter_ZZZZZ mercredi 17 août 2016 18:41
    jeudi 4 août 2016 10:58

Toutes les réponses

  • Il y a plusieurs façon de faire, et les choix dépendent un peu de ce que la recherche fait.

    Avez-vous regardé les méthodes Async et Await?

    regardez les explications msdn ici: https://msdn.microsoft.com/en-us/library/mt674902.aspx

    • Marqué comme réponse Peter_ZZZZZ mercredi 17 août 2016 18:41
    mercredi 3 août 2016 13:35
  • Bonjour,

    Vous pouvez utiliser les méthodes async et await, ou encore utiliser un backgroundworker ou des threads. Mais dans tous les cas si l'utilisateur écrit dans un contrôle ou votre procédure threadée veut écrire il vous faudra attendre de toute façon, les contrôles graphiques ont leur propre thread. Il faut donc bien attendre. Après cela dépend dans quoi vous programmez (ASP.net, WPF, Winform) Une solution serait que l'utilisateur écrive dans un control (textbox ou autre) et valide sa saisie (bouton, appuie sur enter etc) ce qui écrirait dans un file d'attente, idem pour votre procédure threadée. Un autre thread serait en charge d'afficher le contenu de cette file d'attente dans un autre control indépendant (voir MDI, ou autre fenêtre)

    • Proposé comme réponse Johnny Grun lundi 15 août 2016 15:09
    • Marqué comme réponse Peter_ZZZZZ mercredi 17 août 2016 18:41
    jeudi 4 août 2016 10:58
  • Oui Cyrille J,ai regarder async / await

    je vais préciser la situation

    Au début : le programme load et il affiche l'image

    J'ai mis cursor à wait et quand la recherche de 10 secondes se passe.. j'ai mis cursor à default parce que durant la recherche, l'utilisateur ne peux pas appuyer sur les forms ou les boutons de ces forms

    Les recherches durant les 10 secondes :

    vérification d'information dans une 10aine de base de données

    Il y a des for next, des if pas plus.. mais il y en a beaucoup et ça dure 10 secondes..

    si on pouvait régler la situation durant l'ouverture je vérifierais si ça règle la situation durant l'utilisation du programme

    Est-ce que c'est assez précis comme explication?

    En sachant que ce sont en majorité des 

    for x = 0 to baseDeDonnées.count
    
    if baseDeDonnées.rows(x).item(4) = quelqueChose then
    
    end if
    
    next

    qui se font en boucle et qu'il y en a beaucoup.. p-ê pourrez-vous précisez la situation que je cherche!

    Merci beaucoup

    Pierre


    La vie est belle!

    jeudi 4 août 2016 16:04
  • Si tu fais du winform tu dois pouvoir faire ainsi:

    Sur ta form principale, met un timer qui toutes le N secondes lance un backgroundworker puis se désactive (l'évènement tick lance la backgroudworker et arrête le timer). Ce timer peut être activé dans l'evènement shown de la form au départ. Le backgroundworker fait tes requêtes sur tes différentes bases en arrière plan. Lorsqu'il a fini (évènement completed du backgroundworker) il désactive ton contrôle d'affichage du résultat (label, textbox etc) et affiche dedant le résultat puis réactive le contrôle et le timer. Ainsi la boucle est bouclée.

    • Proposé comme réponse Johnny Grun lundi 15 août 2016 15:10
    jeudi 4 août 2016 18:12
  • je comprends oui merci

    ca me fait rire parce que par réflexe.. j'ai mis mon code déjà dans un timer..

    alors à toutes les 1 minutes, il refait les recherches donc c'est déjà dans un timer

    si j'ai compris.. le background worker est déjà inclu dans timer.. alors pourquoi le programme fige durant quelques secondes...?

    si j'ai mal compris.. comment faire pour que le timer aille un backgroundworker à on?

    Merci

    PIerre


    La vie est belle!

    jeudi 4 août 2016 18:57
  • Il vous faut ajouter un backgroundworker sur votre form et lancer le traitement de requête dans le backgroundworker (je vous invite à regarder comment marche les backgroundworker sur le net ici http://webman.developpez.com/articles/dotnet/introbackroundworker/) . Votre timer lancerait alors le traitement du backgroundworker et se mettrait en pause
    • Proposé comme réponse Johnny Grun lundi 15 août 2016 15:10
    jeudi 4 août 2016 22:34
  • Bonjour

    Merci pour la réponse

    J'ai mis un backgroundworker, j'y ai pris le code de mon timer et l'ai collé dedans

    Dans mon timer.. j'ai écris :

       BackgroundWorker1.RunWorkerAsync()

    Maintenant, tout le programme n'est pas capable d'accéder à aucune base de donnée

    aussitôt que ça touche une base de donnée.. il écrit.. aucune ligne à la position 0

    Devons-nous continuer dans ce sens ou essayer une autre façon?

    Pour ce qui est de async et await, j'ai bien compris que l'un attend l'autre mais est-ce que le code s'exécute en parallèle à d'autre code ou à la suite du reste.. parce que si c'est en parallèle, nous pouvons reparler de ca aussi en plus du background worker!

    Merci

    Pierre


    La vie est belle!

    jeudi 4 août 2016 23:48
  • Le backgroundworker suffit, pas besoin de méthode async. Les méthodes async sont une solution, le backgroundworker en est une autre, les threads une autre encore. Il doit y avoir une erreur dans votre code. Le code des requêtes doit se faire dans l'événement dowork de votre backgroundworker . Mettez les résultats de vos requêtes dans un objet déclaré au sein de la class form. Dans l'événement completed du backgroundworker affectez les résultats contenus dans votre objet à un contrôle servant à l'affichage (textbox, label etc). Si ça ne marche pas pouvez vous poster votre code ?
    • Proposé comme réponse Johnny Grun lundi 15 août 2016 15:10
    vendredi 5 août 2016 08:22
  • Bonjour

    J'ai ouvert un nouveau projet

    J'ai mis :

    textbox1.text =   x.tostring

    ça a fait une erreur

    J'ai alors mis dans le completed :

    textbox1.text = x.tostring

    et il n'y avait pas d'erreur

    Comme il y a une tonne de recherche dans mon  code.. je dois tout analyser afin de mettre les résultats dans completed... alors je fais des tests et je reviens là dessus

    Merciiii  :)

    Pierre


    La vie est belle!

    vendredi 5 août 2016 18:45
  • Bonjour J'ai fait des tests...

    Ca doit faire une bonne heure que je débugg parce que je trouvais rien.. je dirais 2 heures même loll c'est normal que je trouvais rien.. il n'y avait rien dans mon code qui clochait selon la normale lol

    Selon mon 90% de bonne compétence en débuggage.. je peux affirmer que rien ne mets mon timer à off

    Donc, toujours selon mon estimation, le timer.tick se passe, le backgroudworker est appellé, j'ai vérifier au sein de la sub timer.tick quand le backgroundworker à terminé et mon timer est toujours à enabled = true mais aussitôt que le programme sort du timer.tick.. ce même timer se met à enabled = false tout seul

    J'ai même fait copier collé ce qu'il y a dans background worker et je l'ai remis dans mon timer comme avant et il reste à enabled = true aussitôt

    deplus.. lorsque je demande à un autre timer d'être a enabled = true au sein de background worker.. ça ne fonctionne pas non plus alors que quand le code est dans timer... ça fonctionne. J'ai donc appellé ce timer à enabled = true dans backgroundworkercompleted

    Un autre phénomène... lorsque le background worker fait appel à une base de données situé sur une autre form... le code saute... mais ça je peux dealer avec.. j'essayerai de mettre des backgroundworker qui appelleront des bakcgroundworker situé sur d'autre form...

    le problème.. c'est pourquoi le timer se met à enabled = false. Si on peux régler ça.. je passerai du temps pour appeller des backgroundworker mis sur d'autre forms en déplaçant tout mon code à différents endroit voilà pour le moment Merci! j'espère qu'on va réussir! Pierre bonne soirée


    La vie est belle!


    vendredi 5 août 2016 21:51
  • Essai de faire timer1.Stop(); Timer1.Enabled=false; Au début de l'événement timer1.tick Ensuite dans le backgroundworker completed tu fais timer1.Start(); timer1.enabled=true; tout les accès à tes bases et récupération de donnée doivent être fait dans le dowork du BGW . L'affectation de résultat dans un contrôle visuelle dans le completed du BGW . N'utilise pas d'autre form c'est inutile et ça peut te conduire à des erreurs . Sinon fait moi un copie coller ici de tout ton code.
    dimanche 7 août 2016 07:45
  • Merci

    Je mets du temps là dessus et je reviens donner ce que ça a donné!

    Pierre  


    La vie est belle!

    dimanche 7 août 2016 17:50
  • Bon.. je viens d'essayer tout ca..

    écoute.. ce code a été fait il y a un an alors je vois qu'il y a des interrelations avec d'autres forms...

    donc pour backgroudworker... ça ne pourra pas faire à cause des autres forms impliquées

    Aussi, j'ai de la difficulté à te donner mon code puisqu'il doit y avoir des pages et des pages de recherches dans des bases de données mais alors prenons en note que mon code est bon mais qu'il va dans d'autre forms...

    Crois-tu que async fonctionnerait ou les threads que tu parlais au début?

    Parce que asyn await je l,ai déjà fait et le timer ne se fait pas en même temps que le reste... si tu crois que async et await ferait foncitonné mon code en même temps alors je te donne un schéma de mon code!!!   ;)


    La vie est belle!

    dimanche 7 août 2016 18:27
  • Async ou BGW ou thread c'est pareil, dans tous les cas c'est une gestion de thread c'est juste la façon de faire qui diffère , le problème vient sans doute de l'utilisation ce pourquoi je voulais voir ton code :)
    dimanche 7 août 2016 19:27
  • ok super! alors voici la schéma de mon code!

    Form AujourdHuiFrm

    TimerMulti_Tick (à toutes les minutes)

    VerifierSourisBougePrincipale ()

    SourisBouge Utilisateur1 ()

    SourisBouge Utilisateur2 ()

    OuvrirJourneePrincipale ()

    OuvrirJournee Utilisateur1 ()

    OuvrirJourneeUtilisateur2 ()

    OuvrirEmailPrincipale ()

    OuvrirEmailUtilisateur1 ()

    OuvrirEmailUtilisateur2 ()

    (...)

    verifier1.VerifierRendezVousUtilisateur2 ()  (dans une classe parce que le code est trop long pour le laisser sur la form principale)

    Aller voir sur la form Utilisateur2frm (les bases de données de l'utilisateur2

    y sont situées)

    (...)

    end timer

    end class (form aujourdhuiFrm)

    Le code est beaucoup plus long mais quand on aura régler ça avec la structure présente.. je l'appliquerai au reste qui est similaire

    J'ai enlever mes asyn et mes await et j'aimerais que tu me dises où les mettre s'il te plaît?!  : ) J'ai hâte que ça fonctionne.. ça fait une couple de mois que j'attends pour ça!!!

    Pierre


    La vie est belle!

    dimanche 7 août 2016 19:49
  • Bonjour,

    Bon c'est pas évident, surtout tes fonctions souris bouge je n'en vois pas l'intérêt. En plus ton code est dans le timetick et non dans le dowork du BGW.

    Ton code devrait plutôt ressembler à ca (bien sur on peut faire mieux pour l'object myobject, bosser avec des listes etc mais j,ai essayer de rester simple).

    Plus que ca je peux pas faire :)

    Public Class Form1
        
    
        Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    
    'on arrete le timer
    Timer1.Stop()
    Timer1.Enabled=false
    
    'On initialise un objet contenant les utisateurs a traiter
    myobject.user1=true
    myobject.user2=true
    
    'on vide les resultats precedent
    myobject.resultat1=""
    myobject.resultat2=""
    
    'on lance le backgrounworker
    bgw1.RunWorkerAsync()
    
          
        End Sub
    
    
    Private Sub bgw1_DoWork( _
    	ByVal sender As System.Object, _
    	ByVal e As System.ComponentModel.DoWorkEventArgs) _
    	Handles bgw1.DoWork
    
    	'traitement long d'acces a tes bases de donnees en fonction des elements contenus dans ton objet
    
    if (myobject.user1) then
    'requetes
    myobject.resultat1=[affecter ici]
    end if
    
    if (myobject.user2) then
    'requetes
    myobject.resultat2=[affecter ici]
    end if
    
    End Sub
    
    
    
    Private Sub bgw1_RunWorkerCompleted( _
    	ByVal sender As Object, _
    	ByVal e As RunWorkerCompletedEventArgs) _
    	Handles bgw1.RunWorkerCompleted
    
    'les temps de l'affichage on desactive la ou les foms
    this.Enabled=false
    Fom2.Enabled=false
    
    	'affichage du resultat sur les controles visuels
    mylabel1.Text+=myobject.resultat1
    mylabel2.Text+=myobject.resultat2
    
    'reactivation des forms
    this.Enabled=true
    Fom2.Enabled=true
    
    
    'reactivation du timer1
    Timer1.Start()
    Timer1.Enabled=true
    
    End Sub
    
        
    End Class

    • Proposé comme réponse Johnny Grun lundi 15 août 2016 15:10
    lundi 8 août 2016 08:51
  • Merci Jonnhy

    La sub sourisBougé c'est une sub qui vérifie si l'utilisateur à touché à la souris!!

    Je comprends maintenant ta façon de penser... je te trouve très patient!! lolll 

    J'avais déjà compris ça... et je pensais qu'on irait vers async await c'est pour ça que mon code n'était pas dans background worker...

    Je pensais que nous irions vers async await puisque dans background worker.. nous avons affaire à d'autres sub que la sub où se situe le background worker et tu m'as dit de ne pas toucher à ça

    On s'était mal compris... pas grave!

    Désires-tu toujours que je prenne le background worker même si nous touchons à d'autres sub que la sub du background worker ou tu désires que nous utilisions async et await? nous commencerons par là! et ensuite je te donnerait un exemple de mon code au plus simple et nous trouverons la façon avec juste une sub ça sera plus facile pour discuter et moi je l'appliquerai au reste!! : )

    Merci Jonnhy!!!!

    Pierre


    La vie est belle!

    lundi 8 août 2016 11:46
  • Oui fait ça avec un BGW . Par contre c'est quoi le but de savoir si la souris a bougée ? Ton programme peut faire de requête constamment non?
    lundi 8 août 2016 15:26
  • le but de la souris bougé c'est pour ne pas qu'il y aille des pop ups qui apparaissent si l'utilisateur n,a pas touché sa souris durant 2 heures et plus! il y a surement comme tu dis des requêtes à ce sujet mais je ne les connaissais pas au moment de la création du programme.. N'hésite pas à me dire c'est quoi!

    bon ok pour le BGW

    J'en écrit juste une.. on la règle et moi je m'arrange pour l'appliquer au reste!  ; ) super!

    private Timer.tick sub
    
    	backgroundworker.DoWork ()
    
    end sub
    
    
    
    BackGroundWork.DoWork sub
    
    'La sub verifierRappelUtilisateur2 est situé sur une autre form et le BGW ne veut pas
    'la traîté il saute par dessus et va à la prochaine sub qui
    'est exécutée sur la form où il est
    
    	form2.verifierRappelUtilisateur2 ()
    
    
    end sub
    
    
    

    comment faire pour qu'il la traite quand même

    voici ce que cette sub située sur une autre form et appelé par le BGW de la form1 fait :

    'Sur la form2 de l'utilisateur 2 Private sub verifierRappelUtilisteur2 for x = 0 to me.utilisateur2DataSet.Rappels.Rows.count-1 if me.utilisateur2DataSet.Rappels.Rows(x).item(0) = quelquechose then

    quelque chose

    end if next end sub


    en plus je metterai ton timer.enabled à false et je le remettrai à true dans le work.completed!!!  ; )


    La vie est belle!

    lundi 8 août 2016 16:15
  • Mets tes sub de traitement dans un module plutôt que sur le code des forms. Attention aucun code dans le dowork ou dans une sub appelée dans le dowork ne doit interagir avec les éléments graphiques des forms.
    lundi 8 août 2016 19:16
  • ok

    je suis en train de l'essayer... 

    moi j,avais des classes alors je dois tout transférer dans des modules mais c'est facile c'est pareil pour le code

    mais là ou j'ai peur c'est que je fais référence à un centaine d'endroit à des labels, des textes de buttons, ..

    pour le moment, ma form RendezVous est apparu avec les labels bien écrit et sans bug... je vais donc continuer à évaluer la situation face aux éléments graphiques comme tu dis et je reviens là dessus!

    Merci beaucoup ça fonctionne pour le moment en préliminaire!!

    Pierre


    La vie est belle!

    lundi 8 août 2016 22:02
  • salut

    hier j,ai essayé ce qu'on a dit avec un petit programme test.. et ça fonctionnais...

    Aujourd'hui, dans mon programme, ca ne fonctionne pas...

    Dans le timer... le BCW est appellé...

    Le BGW appelle le module 

    Ce module, examine une base de donnée de la form1 et ca plante.. ca dit qu'il n'y a pas de ligne à la position 0

    j'ai donc fait des tests.. et j'ai conclu que le programme ne voit pas la form1 comme ouverte... ca me le faisait souvent avec la form2 dans des bugs

    mais comment la form 1 peut ne pas etre ouverte puisque c'est la form principale!! 

    J'ai même mis un débugueur sur la from1.closing mais ca ne passe jamais labas!

    j'ai tout remis dans le timer pour voir si mon code est encore bon et oui. tout fonctionne alors..

    je dirais que le module appellé par le backgroundworker ne voit pas la form1 comme étant ouverte et me donne une erreur de base de donnée (aucune ligne à la position 0)

    Ce que je ne comprends pas c'est pourquoi ca fonctionne en petit programme test et pourquoi ca ne foncitonne pas sur le gros programme

    quand tu dis ne pas avoir d'intéraction avec le visuel dans le runwork mais bien dans le workcompleted.. veut tu dire que même si le programme n'est pas rendu à cet endroit, juste le fait qu'il y aille du code il va le savoir ou il fera une erreur lorsqu'il arrivera sur ce code.. (est-ce qu'il préanalyse le code pour savoir s'il y a interactions avec le visuel dans le BGW (je sais que s'est tiré par les cheveux mais j'essaie de trouvé des solutions parce que je ne vois pas comment le programme peut voir la form1 (la form principale comme étant fermée alors que si elle est fermée, tout le programme arrête!!!)

    Merci beaucoup jonnhy!


    La vie est belle!

    mardi 9 août 2016 13:00
  • Je te conseille dans tes modules et requêtes de ne faire aucun appel à des objets graphiques de tes forms. Fait tes appels et tes déclarations à tes bdd dans le module. Ainsi le bgw n'interagira pas avec les objets graphiques des forms (les objets graphiques label, bouton, textbox, etc.. s'exécutent dans un thread graphique d'affichage, or ton bgw exécute un thread lorsqu'il fait son dowork et les threads par définitions ne peuvent communiquer entre eux sauf par des moyens détournés trop longs à expliquer ici). Au final l'affichage dans les controls graphiques se fait dans le completed du bgw

    Si tu fais ça ton code devrait marcher

    mardi 9 août 2016 18:39
  • salut

    je suis tes conseils... mon code est tellement en interaction avec des graphiques que j'ai dû inventé une nouvelle structure de code pour passer de backgroundworker.run à backgroundworker.completed...

    durant que je réinvante tout ceci et que je déplace et recode.. pourrais-tu me dire si un messagebox fait parti des choses graphiques que je n'ai pas le droit s'il te plaît?  ; )

    Merci beaucoup

    Pierre


    La vie est belle!



    mercredi 10 août 2016 15:48
  • salut

    message 2 de 2

    j'ai fait ce qu'il faut maintenant et... lorsque j,appelle la public sub dans le module ça écrit qu'il n'y a pas de ligne à la position 0

    Form1 
    
    	backgroundWorker.run (sender, e)
    
    		module.verifierRappel
    
    	end sub
    
    
    
    end form
    
    
    module
    
    'ne fonctionne pas
    	if form2.formOuverteBool = true then
    
    	end if
    
    'ne fonctionne pas
    	if form2.utilisateur2dataSet.Table.rows(0).item(0) = something then
    
    	end if
    
    
    end module


    'Rien qui a a accès aux bases de données dans le module appellé par le backGroundWorker ne fonctionne
    

    mmmmm je me demande bien pourquoi!! on va l'avoir

    merci

    Pierre


    La vie est belle!

    mercredi 10 août 2016 20:07
  • Le BW travaille dans un autre Thread, donc les appels aux objets des Form qui sont sur le UI Thread (le thread de l'interface) ne sont pas compatibles.

    Il faut utiliser des variantes ThreadSafe des accès aux éléments de l'UI, "graphiques" ou textbox c'est pareil.

    Pour cela il faut créer des Delegate.

    C'était quoi la question initiale? Charger des éléments au lancement de l'application et le refaire régulièrement?

    mercredi 10 août 2016 20:50
  • Bonjour cyrille!! Merci pour la question plus on est de fou plus on réussit!

    la question de départ était :

    comment faire fonctionner 2 codes en même temps

    j'avais essayé async/await... mais mon code ne fonctionnais pas en même temps que l'autre code..

    alors Jonhy m'a parlé de BackGroundWorker

    mais là.. dans le backgroundworker, j'appelle une fonction dans un module (comme jonnhy m,a demandé),  et dans cette fonction, tout ce qui a accès à la form1 et à la form2 incluant les bases de données fait que le code saute par dessus!

    j'ai travailler 7h hiers pour modifier mon code en background worker afin qu'il n'aille pas avoir avec les graphiques alors j'ai bien envie que ce petit problème de module fonctionne  lollll c'est bien évident! loll

    bonne journée à vous 2!


    La vie est belle!

    jeudi 11 août 2016 15:18
  • bon 

    j'ai fait un petit programme à côté pour valider que ça ne fonctionnait pas :

    j'ai une form1 avec le bakcgroundworker et une bool qui indique True quand la form1 s'ouvre au démarrage

    j'ai  une form2 avec la base de donneés dessus et j'ai ajouté une ligne à la base de donnée

    J'ai un module avec une public sub

    Form1 backgroundWorker.run

    il va dans le module et appelle la public sub 

    Cette sub va voir la bool de form1 qui est supposé être true au démarrage mais elle est false

    Cette sub va voir la base de donnée sur la form2 et indique qu'il y a zéro ligne alors qu'il y en a une

    Si vous pouviez me guider à ce que ce petit programme temporaire fonctionne alors mon vrai programme fonctionnera!!!

    Bonne journée



    La vie est belle!

    jeudi 11 août 2016 16:54
  • j'ai enlevé le module afin que la commande parte de la form1 où est situé le background worker

    sur la form1 le backgroundWorker appelle une sub et dans cette sub, on va chercher une information sur la baseDeDonnées de la form2 et ça ne fonctionne pas

    Je conclue alors pour le moment que lorsque l'on veut passé d'une form à l'autre avec le backgroundworker ça ne fonctionne pas

    mais je dis ça pour le moment.. car si vous savez ce qui bloque ça.. je modifierai mon code en conséquence afin qu'il puisse aller sur d'autres form pour en retiré de l'information!

    : )

    Merci

    Pierre


    La vie est belle!

    jeudi 11 août 2016 17:34
  • Bonjour

    Avez-vous toujours l'intention de m'aider ou vous pensez que ce sera impossible ou vous vous êtes trompé?

    Je ne serai pas fâché

    Pierre

    Bonne jounée


    La vie est belle!

    dimanche 14 août 2016 17:52
  • Bonjour,

    Je pense que j'ai répondu à la question posée plus qu'il n'en faut :)

    Mais après c'est une question de coding et je n'ai pas le temps d'analyser la totalité de votre projet. La solution du BGW doit fonctionner si vous suivez les différents conseils que je vous est donné plus haut. Même si vous utilisez une autre solution que le BGW votre problème restera le même, à savoir cela vient de votre code que je vous conseille de revoir.

    Bon courage à vous 

    lundi 15 août 2016 15:08
  • Salut Jonnhy

    Premièrement merci pour ta réponse... et ta franchise.. j'ai beaucoup apprécié!!

    J'ai pris le temps d'y réfléchir d'ailleurs!

    Je suis d'accord moi aussi tu as répondu à ma question de départ... mais le problème ce que tu m'as aidé en disant de faire un module et ça ne fonctionne pas... alors je vais faire un autre question à part.. si tu as le temps et que tu penses pouvoir m'aider sur le fait que le background worker n'est pas capable d'accéder à des infos lorsqu'il appelle une sub dans un module et que cette sub sur le module va chercher de l'info sur la base de donnée des autres forms alors tu m'aideras là dessus précisément parce que j'ai fait un petit programme en 20 minutes et ce n'est pas mon code qui ne fonctionne pas c'est le background worker qui n'est pas capable ou alors il faut AJOUTÉ quelque chose au lieu de vérifier mon code

    merci!!!!  :) :)

    bonne journée

    Pierre


    La vie est belle!

    mercredi 17 août 2016 13:48