|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Pause-redemarageet stop avec une fonction récursive [ Divers / General ] (Naevis)
Informations & options pour cette discussion
samedi 22 novembre 2008 à 18:07:37 |
Pause-redemarageet stop avec une fonction récursive

Naevis
|
Salut, Voilà, Je cherche par l'intermédiaire de 3 boutons le premier pour faire une pause sur la fonction récursive. le deuxieme pour faire un stop de la fonction le troiseme bouton pour continuer la fonction récurssive. Est-ce possibe?? Car je suis nouveau dans VB.net. Merci d'avance.
|
|
|
dimanche 23 novembre 2008 à 16:54:57 |
Re : Pause-redemarageet stop avec une fonction récursive

fauve
|
Salut, L'astuce serait de faire exécuter ta fonction récursive dans un autre thread. Ainsi, tu pourras stopper, suspendre, continuer, arrêter le thread et par conséquent, ta fonction aussi vu que c'est le thread qui va l'exécuter. Un petit exemple : Note : La méthode Suspend() et Resume() sont obsolète mais tu peux toujours les utiliser. Ca t'affichera seulement deux avertissements. Public Class Form1
Private _thread1 As Threading.Thread
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load _thread1 = New Threading.Thread(AddressOf ThrFunc1) ' ThrFunc1 est la fonction exécutée par le thread. _thread1.Name = "Thread1"' Il est parfois pratique de nommer les threads surtout si on en créé plusieurs. End Sub
Private Sub ThrFunc1() ' Traitement effectué par le thread. Try ' Appel de ta Fonction Récursive Catch ex As Exception Debug.WriteLine(ex.ToString()) End Try End Sub
Private Sub Lancer_Thread_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Lancer_Thread.Click _thread1.Start() ' Lance le thread End Sub
Private Sub Suspendre_Thread_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Suspendre_Thread.Click _thread1.Suspend() ' Suspend le thread End Sub
Private Sub Continuer_Thread_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Continuer_Thread.Click _thread1.Resume() ' Continue le thread suspendu End Sub
Private Sub Arreter_Thread_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Arreter_Thread.Click _thread1.Abort() ' Arrête le thread End Sub End Class
++ Fauve
Pensez : Réponse Acceptée 
|
|
|
lundi 24 novembre 2008 à 18:21:15 |
Re : Pause-redemarageet stop avec une fonction récursive

Naevis
|
Merci pour l'info,
J'ai testé mais je n'y arrive pas.
J'essaye de voir ce qu'est un thread.. Mais je ne comprend pas ce que c'est-_-
Je suis super novice.
Pour info, la fonction récursive est les tour d'hanoi.
Peut-on m'explique ou me donner des indications pour mieux comprendre le thread.
|
|
|
lundi 24 novembre 2008 à 18:46:52 |
Re : Pause-redemarageet stop avec une fonction récursive

fauve
|
Salut, Un thread permet de diviser l'application, il est conseillé de s'en servir, notamment dans les taches complexes qui risquent de bloquer l'interface Ainsi, si un Thread bloque ou ne réponds pas à cause d'une fonction qui effectue une tâche complexe, ton programme restera actif. En effet, si on effectue une recherche ou une écriture sur le disque qui est plutôt longue dans le même thread que ton programme, l'interface graphique de celui-ci sera gelé et tu pourras rien faire pendant le temps de l'exécution de la tâche. En résumé, un thread permet de réaliser des tâches en arrière plan. Note : Si tu as d'autres questions, n'hésites pas  ++ Fauve
Pensez : Réponse Acceptée 
|
|
|
lundi 24 novembre 2008 à 19:41:38 |
Re : Pause-redemarageet stop avec une fonction récursive

fauve
|
Sinon, Tu pourrais mettre le code de ta fonction récursive et en même temps le soucis que tu rencontres avec l'exemple que j'ai mis précedemment pour le thread ++ Fauve
Pensez : Réponse Acceptée 
|
|
|
lundi 24 novembre 2008 à 20:36:06 |
Re : Pause-redemarageet stop avec une fonction récursive

Naevis
|
Voilà le code que j'ai pour ma fonction pour le moment.
C'est très brouillon. j'ai renomé pas mal de chose à ma sauce. Donc il y a un risque de ce perdre
Public Class Form1
Dim cpt As Integer
Dim expoH As Integer
Public Sub Hanoi(ByVal N As Double, ByVal A As Char, ByVal B As Char, ByVal C As Char)
ProgressBar1.Value = cpt
If N > 0 Then
ProgressBar1.Value = cpt
Hanoi(N - 1, A, C, B)
lbldpl().Text = lbldpl.Text & vbCrLf & "Déplacer de " & A & " vers " & B & "."
Application.DoEvents()
minicompteur.Text = "evolution: " & cpt & " / " & (ProgressBar1.Maximum) & "."
ProgressBar1.Value = cpt
cpt = cpt + 1
ProgressBar1.Value = cpt
Hanoi(N - 1, B, A, C)
ProgressBar1.Value = cpt
End If
minicompteur.Text = "evolution: " & cpt & " / " & (ProgressBar1.Maximum) & " ."
lblpct.Text = cpt / (ProgressBar1.Maximum) * 100 & "%"
End Sub
Private Sub startH_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles startH.Click
expoH = nbrann.Value
ProgressBar1.Maximum = (2 ^ expoH) - 1
startH.Enabled = False
endH.Enabled = True
RaZH.Enabled = False
nbrann.Enabled = False
lbldpl.Text = "étape à suivre pour" & Str(nbrann.Value) & " anneaux."
Hanoi(nbrann.Value, "A", "B", "C")
totetape.Text = " le nombre d'étapes est de " & (ProgressBar1.Maximum) & " mouvements."
endH.Enabled = True
RaZH.Enabled = True
End Sub
Private Sub RaZH_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RaZH.Click
totetape.Text = "nombres d'étapes."
minicompteur.Text = " état en cours / total d'états à faire."
lblpct.Text = "Avancement en %. "
lbldpl.Clear()
startH.Enabled = True
nbrann.Enabled = True
ProgressBar1.Value = 0
cpt = 0
End Sub
Private Sub lbldpl_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lbldpl.TextChanged
lbldpl.SelectionStart = lbldpl.TextLength
lbldpl.ScrollToCaret()
End Sub
Private Sub endH_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles endH.Click
End
End Sub
End Class
|
|
|
lundi 24 novembre 2008 à 20:37:36 |
Re : Pause-redemarageet stop avec une fonction récursive

Naevis
|
Là c'est le code de base, je n'ai pas rajouté le thread car je ne sais pas ou le mettre déjà.
Où le déclarer et faire en sorte que tout tourne correctement.
Ici je n'ai pas rajouté les fonctionnalités que je souhaite mettre plus haut.
Enfin, voilà:)
|
|
|
lundi 24 novembre 2008 à 20:40:39 |
Re : Pause-redemarageet stop avec une fonction récursive

fauve
|
Bon déjà je vois tout de suite pourquoi le thread ne fonctionne pas car tu ne peux accéder à des contrôles qui ne se trouvent pas dans le même thread que ta fonction. Notamment, ProgressBar1
Pensez : Réponse Acceptée 
|
|
|
lundi 24 novembre 2008 à 20:43:57 |
Re : Pause-redemarageet stop avec une fonction récursive

Naevis
|
Bon j'ai modifié un truc, j'ai nettoyé ma fonction de toute les progressbar.
j'ai mis progressbar1.value=cpt dans le Private sub startH
|
|
|
lundi 24 novembre 2008 à 20:56:00 |
Re : Pause-redemarageet stop avec une fonction récursive

Naevis
|
Car ce que j'essaye aussi, c'est de pouvoir faire une pause sur la progressbar, et les label qui me montrent l'état d'avancement.
|
|
|
Cette discussion est classé dans : fonction, stop, pause, récursive, redemarageet
Répondre à ce message
Sujets en rapport avec ce message
fonction pause [ par cailloux ]
existe t il une fonction qui permette au programme de faire une pause en miliseconde si oui laquelle si non qu'elle est l'unité la plus faible qui per
Recherche le nom d'une fonction [ par eltaris ]
Existe t-il une fonction qui mette le programmeen "pause" pendant un temps que l'on choisit ?ex : si je tape Pause(5), le programme s'arrête pendant5
Fonction Dir récursive [ par legion91 ]
Voila je cherche le moyen de liste tout les fichiers d'un repertoire et ses sous répertoire avec la fonction Dir.Car la sa n'affiche que le repertoire
Play pause, stop [ par nuttyfbr ]
Comment mettre un bouton play, un pause et un stop dans le code source d'une page pour qu'il agisse sur la vidéos en cours (dans une i-frame) ?Pour pl
Vidage du stack [ par firens ]
Bonjour, j'ai fais une fonction récursive mais malheureusement après un certain nombre d'itération (je ne les contrôles pas...car je dois générer quel
Pause dans access [ par antoineraymond ]
J'aimerais avoir une fonction pour écouler du temps avant de lancer d'autre fonction dans access sans utilisé le timer du formulaire.MerciAntoine
Arreter et sortir de fonctions : un 'Master Stop'... [ par tcholleybus ]
Bonjour à tous!J'ai actuellement besoin de vos lumières:Je lance une 'Sub' après avoir cliqué sur un bouton. Elle effectue une communication vers 2 ap
pause [ par webzied ]
salut comment mais une pause d'une fonction sans arrter lors fonction en vb6
Faire une pause dans une fonction [ par gskorski ]
J'ai deux form. Quand la fonction unload de la première est appelée, j'appelle ma deuxième form. Mon problème c'est qu'il ferme ma première form alors
Pause dans une fonction [ par tchouck ]
j'ai cree une fonction de test et je voudrais faire une pause afin d'attendre une reponse.( env 0.5seconde )ex :if text1.text = "1" thentext2.text = "
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|