Mes thread se fusionnent !? [MAJ]

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Shinao
Messages : 137
Inscription : dim. 21/sept./2008 13:00

Mes thread se fusionnent !? [MAJ]

Message par Shinao »

Hello,

Petit soucis que je ne comprend pas, surtout que je viens de commencer les thread...

J'ai deux erreurs, mais je pense qu'en résolvant l'un je résous l'autre :

http://www.heberge-tes-images.fr/image- ... FF1D9C.jpg
http://www.heberge-tes-images.fr/image- ... FF1D9C.jpg

Dans mon premier thread, il met à jour un gadget toutes les x secondes pour faire un "Veuillez patienter..." dynamique.
Dans mon deuxième, il lance un RunProgram()...

Bref rien de bien complexe, sauf que mon erreur affiche qu'il ne trouve pas le fichier blabla, il a pris mon RunProgram et mon SetGadgetText de l'autre thread... !?

J'ai pensé que c'est parce que mes noms de variable que je passe en paramètre dans le thread (d'ailleurs je ne sais pas à quoi ils servent) étaient les même, je les ai changé mais rien y fais.

Code : Tout sélectionner

CreateThread(@WaitText(), 48)
CreateThread(@LauchInstall(), 80)
Mes Declare :

Code : Tout sélectionner

Declare LauchInstall(lauchinstallparam)
Declare ChangeEtape(changeetape) 

Quelqu'un à une idée ?

Merci d'avance
Dernière modification par Shinao le mar. 21/juin/2011 9:11, modifié 1 fois.
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Mes thread se fusionnent !?

Message par falsam »

Regarde cette exemple et la façon dont est déclarée la procédure.

Code : Tout sélectionner

Enumeration
  #MainForm
  #StartStop
  #Result
EndEnumeration

Declare Count(*Value)


Procedure Count(*Value)
  For i=0 To 10000
    SetGadgetText(#Result, "Compteur = "+Str(i))
    If GetGadgetData(#StartStop)=#False
      Break
    EndIf
  Next i
EndProcedure


Procedure MainFormShow()
  OpenWindow(#MainForm,0,0,300,200,"Exemple avec Thread",#PB_Window_ScreenCentered | #PB_Window_SystemMenu)
  TextGadget(#Result, 20 ,30, 120, 20, "Compteur = 0")
  ButtonGadget(#StartStop, 200, 25, 70, 20, "Start/Stop") 
EndProcedure

MainFormShow()

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #StartStop
          If GetGadgetData(#StartStop)=#False
            SetGadgetData(#StartStop, #True) ;Indiquer au bouton qu'il est actif
            CreateThread(@Count(), 0)
          Else
            SetGadgetData(#StartStop, #False)
          EndIf
          
      EndSelect
    Case #PB_Event_CloseWindow
      End
  EndSelect
ForEver
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Mes thread se fusionnent !?

Message par falsam »

Un autre exemple expliquant comment parcourir un dossier avec une fonction récursive, commencer à afficher le résultat dans une liste, visualiser cette liste pendant l'éxécution de la fonction récursive et enfin stopper le scan du dossier quand on veut.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Shinao
Messages : 137
Inscription : dim. 21/sept./2008 13:00

Re: Mes thread se fusionnent !?

Message par Shinao »

J'ai mis les étoiles (pointeurs ?) et les erreurs ont l'air d'avoir disparus...

Thanks

Ps : merci pour l'ex' ça pourrait m'être utile :]
Shinao
Messages : 137
Inscription : dim. 21/sept./2008 13:00

Re: Mes thread se fusionnent !?

Message par Shinao »

UP

Et oui! Mon erreur est toujours d'actualité, en faite, parfois, l'erreur ce produit, on recommence et ça marche... :

Code : Tout sélectionner

Procedure WaitText(*waittextparam)
  Repeat
    NbPoints + 1
    If NbPoints = 4
      NbPoints = 1
    EndIf
    SetGadgetText(#TextWait, "Veuillez patienter" + Left("...", NbPoints))
    Delay(1000)
  Until WaitTextFinish = 1
  SetGadgetText(#TextWait, "Veuillez patienter")
EndProcedure

Procedure LauchInstall(*lauchinstallparam)
    installer = RunProgram(pathreseau$+"\"+Programmes(soft)\patheu$, Programmes(soft)\parametre$, "", #PB_Program_Open|#PB_Program_Wait)
  Else 
    MessageRequester("Erreur", "Fichier de préférences corrompu, veuillez contacter l'administrateur réseau.")
    End
  EndIf
  ; le fichier s'est lancé au moins une fois
  If installer <> 0
      ; le programme s'est lancé et arrêté (on va cherche le exitcode)
      If ProgramRunning(installer) = 0
      erreur.i = ProgramExitCode(installer)
        ; le programme s'est terminé correctement
        If erreur.i = 0
          MessageRequester("Installation", Programmes(soft)\programme$+" à bien été installé.")
          RAZ()
        EndIf   
        ; le programme a eu une erreur lors de l'installation
        If erreur.i > 0
          MessageRequester("Erreur", "Impossible de lancer l'installation, veuillez contacter l'administrateur réseau.")
          RAZ()
        EndIf    
      EndIf
      ; le fichier est introuvable ou ne peux pas etre lancé
  Else
      MessageRequester("Installation Automatique", "Fichier introuvable ou impossible à lancer. Contactez l'administrateur réseau.")
      RAZ()
  EndIf

Code : Tout sélectionner

CreateThread(@WaitText(), 48)
 CreateThread(@LauchInstall(), 80)
Quelqu'un comprend ? J'ai l'impression que mon thread LauchInstall() prend le setgadgettext() selon le delay()...


Merci d'avance :(

Edit : image de l'erreur : http://www.heberge-tes-images.fr/image- ... FF1D9C.jpg
Avatar de l’utilisateur
falsam
Messages : 7317
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Mes thread se fusionnent !? [MAJ]

Message par falsam »

Regarde si par hasard, tu n'a pas rendu Disable la fenêtre qui contient le gadget #TextWait.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Shinao
Messages : 137
Inscription : dim. 21/sept./2008 13:00

Re: Mes thread se fusionnent !? [MAJ]

Message par Shinao »

Are you a wizard ?

non plus sèrieusement, oui en effet j'ai un disable pour pas que l'utilisateur trifouille pendant l'installation... mais je comprend pas comment ça agis sur mes thread ? Car même si la fenêtre est disabled, je peux toujours faire mon setgadgettext().

Explications, por favor ?

Thanks

Edit : j'ai enlevé le disablewindow(), toujours la même erreur qui survient 1 fois sur 5 a peu près...
Edit2 : J'ai enlevé maintenant le disablewindow (en mode 0, je pensais qu'il était pas important), 1 erreur sur 8 maintenant mais après ça veux surement rien dire
Répondre