Attendre.5 secondes avant de poursuivre le code VB.net

j'ai un code et je veux qu'il attende quelque part au milieu avant d'aller de l'avant. Après le WebBrowser1.Document.Fenêtre.DomWindow.execscript ("checkpasswordconfirmm ();", " JavaScript") Je veux attendre .5 secondes et ensuite faire le reste du code.

    WebBrowser1.Document.Window.DomWindow.execscript("checkPasswordConfirm();","JavaScript")

    Dim allelements As HtmlElementCollection = WebBrowser1.Document.All
    For Each webpageelement As HtmlElement In allelements
        If webpageelement.InnerText = "Sign Up" Then
            webpageelement.InvokeMember("click")
        End If
    Next
18
demandé sur koolboy5783 2013-04-07 05:25:09

7 réponses

Vous aurez besoin d'utiliser Système.Le filetage.Fil.Sommeil(nombre de millisecondes).

WebBrowser1.Document.Window.DomWindow.execscript("checkPasswordConfirm();","JavaScript")

Threading.Thread.Sleep(500) ' 500 milliseconds = 0.5 seconds

Dim allelements As HtmlElementCollection = WebBrowser1.Document.All
For Each webpageelement As HtmlElement In allelements
    If webpageelement.InnerText = "Sign Up" Then
        webpageelement.InvokeMember("click")
    End If
Next
33
répondu Sam 2015-05-22 09:08:57

je pense que cette question Est ancienne mais je donne une autre réponse parce qu'elle est utile pour les autres:

thread.sommeil n'est pas une bonne méthode pour l'attente, parce que d'habitude, il gèle le logiciel jusqu'à la finition de son temps, cette fonction est mieux:

   Imports VB = Microsoft.VisualBasic

   Public Sub wait(ByVal seconds As Single)
    Static start As Single
    start = VB.Timer()
    Do While VB.Timer() < start + seconds
        System.Windows.Forms.Application.DoEvents()
    Loop
End Sub

cette fonction attend un temps spécifique sans geler le logiciel, cependant augmente l'utilisation du CPU, mais la fonction ci-dessous non seulement ne gèle pas le logiciel, mais n'augmente pas non plus le CPU d'utilisation:

    Private Sub wait(ByVal seconds As Integer)
    For i As Integer = 0 To seconds * 100
        System.Threading.Thread.Sleep(10)
        Application.DoEvents()
    Next
End Sub
5
répondu Ali 2016-04-02 03:41:57

créer un timer, qui active le code que vous voulez quand il coche. Assurez-vous que la première ligne du code de la minuterie est:

timer.enabled = false

remplacer la minuterie par ce que vous avez appelé votre minuterie.

puis utilisez ceci dans votre code:

   WebBrowser1.Document.Window.DomWindow.execscript("checkPasswordConfirm();","JavaScript")
timer.enabled = true
Dim allelements As HtmlElementCollection = WebBrowser1.Document.All
For Each webpageelement As HtmlElement In allelements
    If webpageelement.InnerText = "Sign Up" Then
        webpageelement.InvokeMember("click")
    End If
Next
4
répondu Frank 2013-04-07 02:00:57
Imports VB = Microsoft.VisualBasic

Public Sub wait(ByVal seconds As Single)
    Static start As Single
    start = VB.Timer()
    Do While VB.Timer() < start + seconds
        System.Windows.Forms.Application.DoEvents()
    Loop
End Sub

%20+ forte utilisation de cpu + Aucun retard

Private Sub wait(ByVal seconds As Integer)
    For i As Integer = 0 To seconds * 100
        System.Threading.Thread.Sleep(10)
        Application.DoEvents()
    Next
End Sub

% 0.1 utilisation cpu + décalage important

2
répondu ömer özer 2017-11-18 19:36:53
Static tStart As Single, tEnd As Single, myInterval As Integer
myInterval = 5 ' seconds
tStart = VB.Timer()
tEnd = myInterval + VB.Timer()
Do While tEnd > tStart
    Application.DoEvents()
    tStart = VB.Timer()
Loop
0
répondu ibrahim.alzein 2018-04-03 08:38:18

j'ai eu de meilleurs résultats en vérifiant les navigateurs readystate avant de continuer à l'étape suivante. Cela ne fera rien jusqu'à ce que le navigateur ait un readystate "complet"

Do While WebBrowser1.ReadyState <> 4
''' put anything here. 
Loop
0
répondu Ricardo Mendoza 2018-09-08 20:07:37

VB.net Framework 4.0 Code:

Threading.Thread.Sleep(5000)

l'entier est en millisecondes (1 seconde = 1000 milisecondes)

j'ai fait le test et cela fonctionne

-3
répondu Pro 2015-02-27 14:04:42