Thread -> affichage pendant manipulation de fichiers

Programmation d'applications complexes
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Thread -> affichage pendant manipulation de fichiers

Message par Ar-S »

Décidément ces thread me gonflent, ça fait encore plusieurs jours que je me prends le choux avec ça alors que le programme en lui même marche.
Je pensais m'en être sorti dans ce topic mais que nenni !
Alors j'ouvre ce fil de discussion pour ce soucis précis.

But du programme
- Redimensionner par Lot en "glisser/déposer" de dossiers contenant des images jpg.
Ex : dossier1/toto.jpg deviendra dossier1/dossier1/1.jpg et ainsi de suite
Pour ce qui est de cette partie du code, aucun soucis.

Mon problème
Faire fonctionner Procedure Clignote(*cacahuet) en thread pendant que le soft redimensionne.

Je souhaite donc faire apparaitre le numéro de l'image en cours de traitement pendant le traitement.
Puis que le thread se coupe (ou se pause) jusqu'à la prochaine opération de glisser/deposer

J'ai viré ou commenté tout ce qui touchait aux thread et n'ai laissé que la procédure

Voilà le code :

Code : Tout sélectionner

  ;Resizier par Ar-S -2009 // PB 4.30
;2011 - PB 4.51 taille relative
; redimensionnement relatif d'images basé sur X:1024 et Y:768
; Si une image est plus large que haute, le redimmensionement se basera sur X
; et inversement.

UseJPEGImageEncoder()
UseJPEGImageDecoder()

Enumeration
  #IMG : #AFF
EndEnumeration

Global TailleL.l=1024
Global TailleH.l=768
Global L.l,H.l,Limg.l,Himg.l,NumDir.q,pos.b,Son.l
Global DernierDossier$,NouveauRep$,car$,fin,Repertoire$
Global v$=" v1.03"
Global QuiteThread.l
Global NBRfich.l
Global NewList LesFichiers.s()

QuiteThread=0
CREATION=1
Son=4

; ;--------------------------------
; ;- INITIALISATION DU SON .. ou pas
; ;--------------------------------
; If InitSound   () <>0 ; On ne va pas charger le fichier son si le son n'est pas initialisé sur la machine..
  ; PlaySon=#True
  ; If CatchSound ( Son , ?chimes_wav_Start , ?chimes_wav_End) = 0
    ; PlaySon=#False
  ; EndIf
; Else
  ; PlaySon=#False
; EndIf

;--------------------------------
;- LES PROCEDURES
;--------------------------------
  
Procedure Clignote(*cacahuet)
  Debug "Je suis lancé"
  Static mode=0
  Repeat
    Debug "NBR FICH : "+Str(NBRfich)
    While ListIndex(LesFichiers())+1<NBRfich
      Select mode
        Case 0
          SetGadgetText(#AFF,"* Traitement en cours image > "+Str(ListIndex(LesFichiers())+1))
        Case 1
          SetGadgetText(#AFF,"* Traitement en cours image >>> "+Str(ListIndex(LesFichiers())+1))
      EndSelect
      mode = 1-mode
      Delay(100)
      Debug Str(ListIndex(LesFichiers())+1)+"/"+Str(NBRfich)
    Wend
  Until QuiteThread=1
  Debug "Je suis eteind"
EndProcedure
   
Procedure CompteFichiers(dir)
  Repertoire$=EventDropFiles()
  Debug "Repertoire droppé : "+Repertoire$
  NBRfich=0
  ClearList(LesFichiers())
  If ExamineDirectory(dir, EventDropFiles(), "*.jpg") 
    While NextDirectoryEntry(dir)
      If DirectoryEntryType(dir) = #PB_DirectoryEntry_File
        fichier$=DirectoryEntryName(dir)
        If LCase(GetExtensionPart(fichier$))="jpg" Or LCase(GetExtensionPart(fichier$))="jpeg" ; histoire d'être sur de chopper toutes les images
          AddElement(LesFichiers())
          LesFichiers()=Repertoire$+"\"+fichier$
          Debug LesFichiers()
          NBRfich+1
          Debug "Nbr Fichier : "+Str(NBRfich)
        EndIf 
      EndIf  
    Wend
    FinishDirectory(dir)
  EndIf
  ProcedureReturn NBRfich
EndProcedure

;--------------------------------
;- LE PROGRAMME
;--------------------------------

OpenWindow(0, 583, 629, 319, 23, "LDVM Redim 1024/768 relatif"+v$, #PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
StickyWindow(0,1)
StringGadget(#AFF, 0, 0, 315, 20, "Glissez/déposez le dossier image ici",#PB_String_ReadOnly)
EnableWindowDrop(0, #PB_Drop_Files, #PB_Drag_Copy)

thread=CreateThread(@Clignote(),200)
; While IsThread(thread)
  ; Delay(1)
; Wend
  
  ;{- Boucle
Repeat
  Select WaitWindowEvent()
      
    Case #PB_Event_WindowDrop 
      ;--------------------------------
      ;- ANALYSE DU REPERTOIRE
      ;--------------------------------
      
      Depart=ElapsedMilliseconds()
      
      CompteFichiers(NumDir)
      
      Debug "il y a "+Str(NBRfich)+" images jpg dans ce dossier"
      Debug "Taile liste : "+Str(ListSize(LesFichiers()))
      Debug "...."
      
      ; thread=CreateThread(@Clignote(),100)
      ; While IsThread(thread)
      ; Delay(1)
      ; Wend
      
      ;--------------------------------
      ;- RECUPERATION DU NOM DU DERNIER DOSSIER
      ;--------------------------------
      RepSav$=Repertoire$+"\"
      pos=1
      NumCar=Len(Repertoire$)
      Repeat
        car$=Right(Repertoire$,pos)
        While Left(car$,1)<>"\"
          pos+1
          car$=Right(Repertoire$,pos)
        Wend 
      Until Left(car$,1)="\"
      DernierDossier$=Right(car$,pos-1)
      ; Debug "Dernier dossier : "+DernierDossier$
      ; SetClipboardText(DernierDossier$)
      
      
      ;--------------------------------
      ;- CREATION DU REPERTOIRE DESTINATION
      ;--------------------------------
      NouveauRep$=RepSav$+DernierDossier$+"\"
      Debug "Rep à créer : "+NouveauRep$
      ;On vérifie s'il existe
      Resultat.q = FileSize(NouveauRep$) 
      Debug Resultat
      If Resultat <> -2 ; s'il ni a pas de repertoire on le créé
        nouveauRep=CreateDirectory(NouveauRep$)
        Debug NouveauRep$+" créé !"
      Else
        Debug NouveauRep$+" existe déjà :]"        
      EndIf 
      
      
      ;--------------------------------
      ;- REDIMENSION ET SAUVEGARDE
      ;--------------------------------
      
      ResetList(LesFichiers())
      While NextElement(LesFichiers())
        Debug LesFichiers()
        charge=LoadImage(#IMG, LesFichiers())
        Debug "Chargement de l'image :"+LesFichiers()
        Limg=ImageWidth(#IMG)
        Himg=ImageHeight(#IMG)
        Debug "Image chargée ! X : "+Str(Limg)+"     Y : "+Str(Himg)
        
        ;- Calcule de la taille des images de destination.
        If Limg>Himg
          L=TailleL
          H=(Himg*TailleL)/Limg
          Debug " Resolution de sortie :"
          Debug " X : "+Str(L)+"         Y : "+Str(H) 
        ElseIf Himg>Limg
          H=TailleH
          L=(Limg*TailleH)/Himg
          Debug " Resolution de sortie :"
          Debug " X : "+Str(L)+"         Y : "+Str(H)
          
        ElseIf Limg=Himg  
          H=TailleH 
          L=TailleH ; H car doit faire la Hauteur en taille car les ecrans sont plus large que haut...
          Debug " Resolution de sortie :"
          Debug " X : "+Str(L)+"         Y : "+Str(H)
        Else
          Debug "erreur redimensionnement"
        EndIf
        ;- Redimensionnement de l'image
        ResizeImage(#IMG,L,H,#PB_Image_Smooth)
        
        ;- Sauvegarde de la nouvelle image
        NomNew$=Str(ListIndex(LesFichiers())+1)+".jpg"
        Debug "Nouveau nom : "+NomNew$
        
        Debug "Destination : "+NouveauRep$+NomNew$
        sauve=SaveImage(#IMG,NouveauRep$+NomNew$,#PB_ImagePlugin_JPEG ,8)
        If sauve=0
          SetGadgetText(#AFF,"Erreur Sauvegarde")
          Debug "Save Foireuse"
        Else
          Debug "Save OK"
          Debug "----------------------------"
        EndIf
        Delay(1)
      Wend
      
      ; ;--------------------------------
      ; ;- LECTURE DU SON DE FIN D'OPERATION
      ; ;--------------------------------
      ; If PlaySon=#True
        ; PlaySound (Son ,1)
        ; Delay (600)
        ; StopSound(Son)
      ; EndIf
      
      Arrivee=ElapsedMilliseconds()-Depart
      SetGadgetText(#AFF,"Terminé ! "+Str(NBRfich)+" images traitées dans "+DernierDossier$+" en "+Str(Arrivee)+" ms")
      NBRfich=0
      ClearList(LesFichiers())
      QuiteThread=1
      
    Case #PB_Event_CloseWindow
      Select EventWindow()
        Case 0
          
          CloseWindow(0)
          Break
      EndSelect
  EndSelect
ForEver
  
Dernière modification par Ar-S le sam. 05/mars/2011 19:10, modifié 1 fois.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Thread -> affichage pendant manipulation de fichiers

Message par G-Rom »

utilise des mutex() ?
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Thread -> affichage pendant manipulation de fichiers

Message par Ar-S »

Je n'ai jamais essayé les mutex() et l'exemple de la doc ne me parle pas vraiment..
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Thread -> affichage pendant manipulation de fichiers

Message par G-Rom »

Donne ta version avec les Threads.

en gros , un mutex , protège tes données ,
un thread , lui tourne en parallèle de ton programme principal , il tourne plus vite que ta boucle principale car lui à une tache plus simpliste ,
il accède tout comme ton programme principal à une zone mémoire ( liste chainée , variable , tableau , etc... )
si ta boucle principale , accède a une donnée par exemple une variable , et que ton thread lui aussi y accède , c'est le crash...
Thread()
{

LockMutex()

Toto + 1

UnLockMutex()

}



CreateThread(Thread())


Repeat
{

LockMutex()
debug Toto ; <---- Le thred ne peut pas venir modifier toto , car le mutex est vérouillé !
UnLockMutex()


}
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Thread -> affichage pendant manipulation de fichiers

Message par Ar-S »

J'ai remis le code en l'état en haut du topic (y'a qu'une lecture du son que j'ai viré car trop de datasection pour le son).
Vraiment je ne trouve pas le multithreading très accessible.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Thread -> affichage pendant manipulation de fichiers

Message par G-Rom »

Ton code est un peu fouillis , tu devrais "clignoté" dans ta boucle principal , puis redimensionné l'image dans ton thread.
le thread est pratique pour des taches lourdes , comme le traitement d'image. ;)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Thread -> affichage pendant manipulation de fichiers

Message par Ar-S »

Figure toi que je pensais me tourner vers cette direction.. Je vais essayer.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Thread -> affichage pendant manipulation de fichiers

Message par Ar-S »

J'ai essayé d'inverser les processus, donc redimensionnement et sauvegarde en thread et affichage dans le "stringgadget" dans la boucle,
ça ne fonctionne pas plus..

Code : Tout sélectionner

;Resizier par Ar-S -2009 // PB 4.30
;2011 - PB 4.51 taille relative
; redimensionnement relatif d'images basé sur X:1024 et Y:768
; Si une image est plus large que haute, le redimmensionement se basera sur X
; et inversement.

UseJPEGImageEncoder()
UseJPEGImageDecoder()

Enumeration
  #IMG : #AFF
EndEnumeration

Global TailleL.l=1024
Global TailleH.l=768
Global L.l,H.l,Limg.l,Himg.l,NumDir.q,pos.b,Son.l,Depart.l,Arrivee.l
Global DernierDossier$,NouveauRep$,car$,fin,Repertoire$
Global v$=" v1.03"
Global QuiteThread.l
Global NBRfich.l
Global NewList LesFichiers.s()

Declare TraiteImage(*truc)

QuiteThread=0
CREATION=1
Son=4

; ;--------------------------------
; ;- INITIALISATION DU SON .. ou pas
; ;--------------------------------
; If InitSound   () <>0 ; On ne va pas charger le fichier son si le son n'est pas initialisé sur la machine..
  ; PlaySon=#True
  ; CatchSound ( Son , ?chimes_wav_Start , ?chimes_wav_End)
; Else
  ; PlaySon=#False
; EndIf

;--------------------------------
;- LES PROCEDURES
;--------------------------------
  
Procedure TraiteImage(*truc)
  Depart=ElapsedMilliseconds()
  ;--------------------------------
  ;- REDIMENSION ET SAUVEGARDE
  ;--------------------------------
  ;Repeat
    ResetList(LesFichiers())
    While NextElement(LesFichiers())
      Debug LesFichiers()
      charge=LoadImage(#IMG, LesFichiers())
      Debug "Chargement de l'image :"+LesFichiers()
      Limg=ImageWidth(#IMG)
      Himg=ImageHeight(#IMG)
      Debug "Image chargée ! X : "+Str(Limg)+"     Y : "+Str(Himg)
      
      ;- Calcule de la taille des images de destination.
      If Limg>Himg
        L=TailleL
        H=(Himg*TailleL)/Limg
        Debug " Resolution de sortie :"
        Debug " X : "+Str(L)+"         Y : "+Str(H) 
      ElseIf Himg>Limg
        H=TailleH
        L=(Limg*TailleH)/Himg
        Debug " Resolution de sortie :"
        Debug " X : "+Str(L)+"         Y : "+Str(H)
        
      ElseIf Limg=Himg  
        H=TailleH 
        L=TailleH ; H car doit faire la Hauteur en taille car les ecrans sont plus large que haut...
        Debug " Resolution de sortie :"
        Debug " X : "+Str(L)+"         Y : "+Str(H)
      Else
        Debug "erreur redimensionnement"
      EndIf
      ;- Redimensionnement de l'image
      ResizeImage(#IMG,L,H,#PB_Image_Smooth)
      
      ;- Sauvegarde de la nouvelle image
      NomNew$=Str(ListIndex(LesFichiers())+1)+".jpg"
      Debug "Nouveau nom : "+NomNew$
      
      Debug "Destination : "+NouveauRep$+NomNew$
      sauve=SaveImage(#IMG,NouveauRep$+NomNew$,#PB_ImagePlugin_JPEG ,8)
      If sauve=0
        SetGadgetText(#AFF,"Erreur Sauvegarde")
        Debug "Save Foireuse"
      Else
        Debug "Save OK"
        Debug "----------------------------"
      EndIf
      Delay(1)
    Wend
    
    ; ;--------------------------------
    ; ;- LECTURE DU SON DE FIN D'OPERATION
    ; ;--------------------------------
    ; If PlaySon=#True
      ; PlaySound (Son ,1)
      ; Delay (600)
      ; StopSound(Son)
    ; EndIf
    
    Arrivee=ElapsedMilliseconds()-Depart
    
    QuiteThread=1
  ;ForEver
EndProcedure

   
Procedure CompteFichiers(dir)
  Repertoire$=EventDropFiles()
  Debug "Repertoire droppé : "+Repertoire$
  NBRfich=0
  ClearList(LesFichiers())
  If ExamineDirectory(dir, EventDropFiles(), "*.jpg") 
    While NextDirectoryEntry(dir)
      If DirectoryEntryType(dir) = #PB_DirectoryEntry_File
        fichier$=DirectoryEntryName(dir)
        If LCase(GetExtensionPart(fichier$))="jpg" Or LCase(GetExtensionPart(fichier$))="jpeg" ; histoire d'être sur de chopper toutes les images
          AddElement(LesFichiers())
          LesFichiers()=Repertoire$+"\"+fichier$
          Debug LesFichiers()
          NBRfich+1
          Debug "Nbr Fichier : "+Str(NBRfich)
        EndIf 
      EndIf  
    Wend
    FinishDirectory(dir)
  EndIf
  ProcedureReturn NBRfich
EndProcedure

;--------------------------------
;- LE PROGRAMME
;--------------------------------

OpenWindow(0, 583, 629, 319, 23, "LDVM Redim 1024/768 relatif"+v$, #PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
StickyWindow(0,1)
StringGadget(#AFF, 0, 0, 315, 20, "Glissez/déposez le dossier image ici",#PB_String_ReadOnly|#ES_CENTER)
EnableWindowDrop(0, #PB_Drop_Files, #PB_Drag_Copy)

 
  ;{- Boucle
Repeat
  Select WaitWindowEvent()
      
    Case #PB_Event_WindowDrop 
      ;--------------------------------
      ;- ANALYSE DU REPERTOIRE
      ;--------------------------------
      
      CompteFichiers(NumDir)
      
      Debug "il y a "+Str(NBRfich)+" images jpg dans ce dossier"
      Debug "Taille liste : "+Str(ListSize(LesFichiers()))
      Debug "...."
      
      
      If NBRfich>0 ; s'il y a des images jpg ou jpeg
        
        ;--------------------------------
        ;- RECUPERATION DU NOM DU DERNIER DOSSIER
        ;--------------------------------
        RepSav$=Repertoire$+"\"
        pos=1
        NumCar=Len(Repertoire$)
        Repeat
          car$=Right(Repertoire$,pos)
          While Left(car$,1)<>"\"
            pos+1
            car$=Right(Repertoire$,pos)
          Wend 
        Until Left(car$,1)="\"
        DernierDossier$=Right(car$,pos-1)
        ; Debug "Dernier dossier : "+DernierDossier$
        ; SetClipboardText(DernierDossier$)
        
        
        ;--------------------------------
        ;- CREATION DU REPERTOIRE DESTINATION
        ;--------------------------------
        NouveauRep$=RepSav$+DernierDossier$+"\"
        Debug "Rep à créer : "+NouveauRep$
        ;On vérifie s'il existe
        Resultat.q = FileSize(NouveauRep$) 
        Debug Resultat
        If Resultat <> -2 ; s'il ni a pas de repertoire on le créé
          nouveauRep=CreateDirectory(NouveauRep$)
          Debug NouveauRep$+" créé !"
        Else
          Debug NouveauRep$+" existe déjà :]"        
        EndIf 
        
        thread=CreateThread(@TraiteImage(),100)
        
        
        mode=0
        Repeat
          Debug "NBR FICH : "+Str(NBRfich)
          
          Select mode
            Case 0
              SetGadgetText(#AFF,"* Traitement en cours image > "+Str(ListIndex(LesFichiers())+1))
            Case 1
              SetGadgetText(#AFF,"* Traitement en cours image >>> "+Str(ListIndex(LesFichiers())+1))
          EndSelect
          mode = 1-mode
          Delay(100)
          Debug Str(ListIndex(LesFichiers())+1)+"/"+Str(NBRfich)
        Until QuiteThread=1 ; ListIndex(LesFichiers())+1>0 And ListIndex(LesFichiers())+1 = NBRfich

        SetGadgetText(#AFF,"Terminé ! "+Str(NBRfich)+" images traitées dans "+DernierDossier$+" en "+Str(Arrivee)+" ms")

        If IsThread(thread)
          KillThread(thread)
          Debug "THREAD TUE"
        Else
          Debug "THREAD DEJA MORT"
        EndIf
        
        NBRfich=0
        ClearList(LesFichiers())
        
      Else
        SetGadgetText(#AFF,"Il ni a pas d'images valides dans ce répertoire")
      EndIf
      
      
    Case #PB_Event_CloseWindow
      Select EventWindow()
        Case 0
          
          CloseWindow(0)
          Break
      EndSelect
  EndSelect
ForEver
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Thread -> affichage pendant manipulation de fichiers

Message par G-Rom »

Un thread dois être leger , là c'est encore plus le brin ^^
en gros , dans ta boucle principale , du liste dans un premier temps les images récupérer via le drag & drop , ca ne prend pas trop de temps , si ca prend du temps & que ca bloque ton programme , fait le dans un thread. , une fois que le listing est terminé , toujours dans ta boucle principale , tu parcours la liste des fichiers
et pour chaque fichier tu lances le thread.

ex:
Procedure ThreadRedim(*PtrSurImageID)
ImageID = peeki( *PtrSurImageID )
redim ici.
Endprocedure



*Pointeur = 0
pokei(*Pointeur,ImageID)
createthread(@ThreadRedim() , *Pointeur)
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Thread -> affichage pendant manipulation de fichiers

Message par G-Rom »

Code : Tout sélectionner

Structure image
  imageid.i
  threadID.i
EndStructure

Global NewList dir_image.image()



Procedure ResizeImage_thread(*imageID.i)
  ImageID = PeekI(*imageID)
  ResizeImage(ImageID,1024,768)  
EndProcedure




ForEach dir_image()
  
  *Pointeur = #Null
  PokeI(*Pointeur,dir_image()\imageid)
  
  dir_image()\threadID = CreateThread(@ResizeImage_thread(),*Pointeur)

Next 
A toi de mettre le reste autour ;)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Thread -> affichage pendant manipulation de fichiers

Message par Ar-S »

Merci G-Rom,
Je suis pas super à l'aise avec les Poke et autre accés mémoire, j'ai peur de générer un joli
Image
sur mon pc tellement je risque de foutre le bronx.


----edit-----

oops tu as changé le bouzin je vais regarder ça.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Thread -> affichage pendant manipulation de fichiers

Message par G-Rom »

te fait pas de soucis , poke / peek , te donne accès à seulement la mémoire de ton programme , pas ailleurs. donc les risque sont limités.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Thread -> affichage pendant manipulation de fichiers

Message par Ar-S »

Bon, je vais voir ça. :)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Thread -> affichage pendant manipulation de fichiers

Message par G-Rom »

Nico à même effacer ce topic... ca me gonfle...

As tu réussi tout seul ? je t'avais donner une amorce de réponse hier soir, tu as eu le temps de voir ma réponse ?
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Thread -> affichage pendant manipulation de fichiers

Message par Ar-S »

Non j'ai pas reussi, mais après je n'ai pas poursuivis longtemps hier soir, faut dire que j'ai posté ce topic ça faisait 2 jours que je me prenais la tête dessus..
Je m'y remets dès que j'arrive à me motiver. 4 ans (ce n'est pas une façon de parler) que cette gestion des thread me les casse.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Répondre