FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Gestion d'un système client-serveur.
Interrompre une tâche Emptypar Klaus Ven 17 Mai 2024 - 14:02

» item_index(résolu)
Interrompre une tâche Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
Interrompre une tâche Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
Interrompre une tâche Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Interrompre une tâche Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
Interrompre une tâche Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
Interrompre une tâche Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Interrompre une tâche Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Interrompre une tâche Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Interrompre une tâche Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Interrompre une tâche Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Interrompre une tâche Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
Interrompre une tâche Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Interrompre une tâche Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
Interrompre une tâche Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le deal à ne pas rater :
Cartes Pokémon : la prochaine extension Pokémon sera EV6.5 Fable ...
Voir le deal

 

 Interrompre une tâche

Aller en bas 
2 participants
AuteurMessage
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Interrompre une tâche Empty
MessageSujet: Interrompre une tâche   Interrompre une tâche EmptyVen 14 Oct 2011 - 14:44

Je pense que la question a déjà été posée (plusieurs fois ?), j'ai recherché, pas trouvé.
Mon problème est celui-ci: le programme est en train d'exécuter une boucle que je voudrais pouvoir interrompre sur appui d'une touche par l'utilisateur s'il trouve que c'est trop long (ou n'importe quoi d'autre).

Concrètement, j'ai un sous-programme qui parcourt un fichier binaire à l'aide d'une boucle dans laquelle est effectuée un certain traitement. Mais ce fichier binaire peut être très gros.
Alors j'ai essayé:
- une touche STOP, et dans la boucle je teste si la touche a été cliquée (IF CLICKED...), mais c'est sans effet, le clic sur la touche n'est détecté qu'à la fin de la boucle, en sortie du sous-programme.
- un TIMER, avec positionnement d'un indicateur si la touche a été cliquée et test de cet indicateur dans la boucle. Même punition, même motif, le clic sur la touche n'est pas détecté pendant la boucle.
C'est même pire, si on clique plusieurs fois pendant l'exécution on a 'Panoramic ne répond pas...' et ça finit par planter le programme à la sortie.

Quelqu'un connaît-il un moyen de résoudre ce problème ?
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

Interrompre une tâche Empty
MessageSujet: Re: Interrompre une tâche   Interrompre une tâche EmptyVen 14 Oct 2011 - 16:17

Bonjour JL35 !
Petite question : ton sous-programme est déclenché par lui-même par un évènement ?

Revenir en haut Aller en bas
http://nardo26.lescigales.org
Invité
Invité




Interrompre une tâche Empty
MessageSujet: Re: Interrompre une tâche   Interrompre une tâche EmptyVen 14 Oct 2011 - 16:30

Bonjour,
Heureux de te revoir Nardo.
@JL35
est-ce que ceci te convient.
Code:

label arret ,procedure , bouton
dim a  , passage
memo 1
form 10:left 10,500:hide 10
memo 11:parent 11,10
button 12:parent 12,10:left 12,100:top 12,100:caption 12,"continu":on_click 12,bouton

timer 5:timer_interval 5,200 : on_timer 5,arret :timer_off 5
gosub procedure
end

procedure:
  timer_off 5
  repeat
      item_add 1,a:a=a+1 :wait 100
      if a/10=int(a/10)
        passage=passage+1 :timer_on 5
        end: ' ou return idem
      end_if
  until scancode=27
return

arret:
timer_off 5
  show 10
  item_add 11,"passage:"+str$(passage)
return

bouton:
  timer_off 5:hide 10
  gosub procedure
return

J'arrive pas à me concentrer en ce moment, mais c'est un procédé que j'utilise régulièrement. Là j'ai mis passage =passage +1, mais en définissant passage pour tel ou tel chose, je fais des choses diverses, mais là je n'arrive pas à me concentrer. Je suis pris par d'autres idées.
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
Localisation : Valence
Date d'inscription : 02/07/2010

Interrompre une tâche Empty
MessageSujet: Re: Interrompre une tâche   Interrompre une tâche EmptyVen 14 Oct 2011 - 16:43

Bonjour cosmos !

Si ton sous-programme est dans un traitement d'évènement, il est non-interruptible. (je me trompe peut-être, à confirmer avec Jack).

Une solution :
C'est de faire un traitement par lot... tu découpes ton traitement en plusieurs tranches (en arrière plan, déclenché par timer)

par exemple :
Code:

  TIMER 1: TIMER_OFF 1: TIMER_INTERVAL 1,2000 : 'on déclenche un traitement toutes les 2 secondes
  start=1
 END
 
 timer1:
  timer_off 1
  for i=start to start+100
    traitement...
  next i
  start=start+100
  if NOT EOF()
    timer_on 1
  end_if
 return

A partir de là, tu peux tester une touche, un bouton à tout moment et stopper le timer qui effectue ton traitement...
Revenir en haut Aller en bas
http://nardo26.lescigales.org
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Interrompre une tâche Empty
MessageSujet: Re: Interrompre une tâche   Interrompre une tâche EmptyVen 14 Oct 2011 - 16:53

Merci les amis pour votre promptitude à répondre ! (Nardo, tu redémarres fort).
Oui mon sous-programme est bien déclenché par un événement (clic sur un bouton) et il me semblait bien que ce n'était pas possible de l'interrompre.

En fait j'ai un peu changé mon fusil d'épaule: avant j'écrivais le résultat de ma boucle dans un fichier eet je ne pouvais rien faire avant la sortie.
Maintenant j'affiche au fur et à mesure mes lignes de résultat (une à chaque bouclage) dans un LIST, avec DISPLAY à chaque ligne (sinon rien ne s'affiche avant la fin), et là miracle, je détecte le clic sur le bouton Stop.
Alors du coup, mon problème est résolu (voyez ça dans 'Vos sources...', l'Explorateur maison que je vais mettre à jour tout de suite.

Et merci encore à tous les deux, je vais quand même étudier vos solutions.
Revenir en haut Aller en bas
Invité
Invité




Interrompre une tâche Empty
MessageSujet: Re: Interrompre une tâche   Interrompre une tâche EmptyVen 14 Oct 2011 - 17:48

Je ne retrouve pas tout à fait ma méthode, mais voici pour interrompre une boucle qu'on arrive pas à voir les résultats intermédiaires, tester et continuer.

Surement qu'il y a plus simple, mais cela m'échappe pour le moment.
Code:

label arret ,procedure , bouton ,boucle ,fin
dim a
memo 1
button 2:top 2,150:caption 2,"stop":on_click 2,arret
form 10:left 10,300 :hide 10
memo 11:parent 11,10
button 12:parent 12,10:left 12, 70:top 12,150:caption 12,"continu":on_click 12,bouton
button 13:parent 13,10:left 13,180:top 13,150:caption 13,"quittez":on_click 13,fin
timer 5:timer_interval 5,200 : on_timer 5,arret :timer_off 5
on_click 0, procedure
message "cliquez sur la forme pour démarrer"
end

procedure:
  repeat:until scancode=0
  timer_off 5
  repeat
      gosub boucle :wait 100
  until scancode=27
return

boucle:
  if scancode=1
      timer_on 5
      end
  else
      if active(2)=1 then item_add 1,a : a= a + 1
  end_if
return

arret:
timer_off 5
  inactive 2 :show 10
  item_add 11,"a:"+str$(a)
return

bouton:
  timer_off 5:active 2 :hide 10
  gosub procedure
return

fin:
terminate
Revenir en haut Aller en bas
Contenu sponsorisé





Interrompre une tâche Empty
MessageSujet: Re: Interrompre une tâche   Interrompre une tâche Empty

Revenir en haut Aller en bas
 
Interrompre une tâche
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [RÉSOLU] ON_CLOSE : interrompre processus fermeture fenêtre

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: