Attendre entre 2 actions [Résolu]

Signaler
Messages postés
120
Date d'inscription
mercredi 17 septembre 2003
Statut
Membre
Dernière intervention
18 mai 2007
-
Messages postés
228
Date d'inscription
mardi 5 avril 2005
Statut
Membre
Dernière intervention
4 janvier 2008
-
Bonjour,

J'aimerais savoir comment faire pour attendre un certain lap de temps entre 2 actions. J'avais pensé utilisé la méthode sleep (de thread), mais cette méthode ne fait que "geler" complétement le programme et ce n'est pas ce que je veux. Je veux que je puisse déplacer ma fenêtre comme si rien n'était, mais que la prochaine action programmée n'est pas lieu tout suite...

En espérant avoir été clair...

Merci
a+

5 réponses

Messages postés
228
Date d'inscription
mardi 5 avril 2005
Statut
Membre
Dernière intervention
4 janvier 2008
1
Salut

je te propose une petite fonction :

Dans ta form ou dans un module (mais dans ce cas-là fonctions publiques) il faut déclarer les 2 fonctions suivantes :

    Private Declare Function GetTickCount Lib "kernel32" () As Long   ' c'est un API windows

    Private Function Pause(ByVal lnbmilliseconds As Long)   'fonction pause avec en paramètre le nombre de millisecondes à attendre
        Dim wait As Long

        wait = GetTickCount + lnbmilliseconds
        Do Until GetTickCount >= wait
            Application.DoEvents()   'DoEvents pour ne pas geler l'application
        Loop
    End Function

Puis ensuite appeler ta fonction pause dans ton code comme ceci :

Pause(100) 'pour 100 millisecondes



++

Deluka.
Messages postés
338
Date d'inscription
mardi 28 janvier 2003
Statut
Membre
Dernière intervention
4 novembre 2008
1
salut
tu travaille avec .Net?

Hassen TUNISIE
Messages postés
120
Date d'inscription
mercredi 17 septembre 2003
Statut
Membre
Dernière intervention
18 mai 2007

Bonjour,

Oui, .Net avec le framework 2.0

a+
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
22
Un composant Timer devrait te permettre de faire cela. En VB6, çà donne ceci, mais en VB.NET, çà doit être très similaire.

[...]
action1
Timer1.Enabled = True

[...]

Sub Timer1_Timer()
If Timer.Value = 2000 Then 'délai de 2 secondes
    action2
    Timer1.Enabled = False
End If
End Sub

Manu

--------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
22
Finalement, avec un p'tit SharpDevelop, j'ai pu coder ceci rapidement :

        Public compteur As Long
       
       
        Public Sub New()
            [...]
            compteur=0
            Timer1.Interval=1000
            [...]
        End Sub
       

       
        Private Sub Timer1Tick(sender As System.Object, e As System.EventArgs)
            compteur = compteur+1
            If compteur = 3 Then
                // action2 déclenchée au bout de 3 secondes à mettre ici
                Timer1.Stop()
            End If
           
        End Sub
       
        Private Sub Button1Click(sender As System.Object, e As System.EventArgs)
            // action1 a mettre ici
            Timer1.Start()
        End Sub

Manu
--------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.