程序在30分钟后没有响应

时间:2013-04-02 06:19:52

标签: vb.net browser refresh

我有一个应用程序,我可以登录社交网络,并不断检查以查看何时重置非活动帐户。在这种情况下,我在他们的网站上使用Xbox的免费gamertag更改用于查看这些名称何时被重置。我创建了一个应用程序,我登录到Xbox.com并导航到更改webbrowser上的gamertag页面,我在文本框中键入了我想要的Gamertag(一个非活动标签,将很快重置),我点击了“Autoclick”按钮,它不断尝试声明帐户名称。所以我创建了这个脚本,但后来我意识到它会很快超时。该程序在快速速度下只能持续约10分钟(有3种速度,慢速 - 中速 - 快速),但速度会慢一些。但是,我意识到我必须每隔几秒刷新一次页面才能让它工作更长时间。一旦我这样做,应用程序就更耐用了,持续了大约30多分钟。然而,它仍然超时。有些人制作这些剧本可以持续数天,但我的目标只有一天。所以我问是否有人知道如何改进这个?这是我脚本的一部分。我有一个按钮,一旦点击使计时器能够自动点击声明按钮。

所以我的按钮:

Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    If RadioButton1.Checked = True Then
        Timer1.Interval = 40
    ElseIf RadioButton2.Checked = True Then
        Timer1.Interval = 175
    Else
        Timer1.Interval = 500
    End If

    If ((WebBrowser1.IsBusy)) Then



    Else

        Timer1.Enabled = True



    End If


End Sub

然后是Timer1,它执行自动更新,但也具有刷新属性以使其更耐用:

 Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick



    If Not number_of_ticks > 170 Then
        number_of_ticks += 1
        If ((WebBrowser1.IsBusy)) Then
        Else
            If WebBrowser1.Url.ToString = "https://live.xbox.com/en-US/ChangeGamertag" Then


                WebBrowser1.Document.GetElementById("NewGamertag").SetAttribute("value", txtTurbo.Text)

                WebBrowser1.Document.GetElementById("claimIt").InvokeMember("Click")
            Else

                WebBrowser1.Navigate("https://live.xbox.com/en-US/ChangeGamertag")


            End If
        End If

    Else
        'number_of_ticks has exceed the maximum amount of allowed ticks
        Timer1.Enabled = False
        WebBrowser1.Refresh()

        number_of_ticks = 0
        Timer1.Enabled = True



    End If



End Sub

我不知道有多少方法可以让它持续更长时间,但如果有人知道如何做到这一点,我会非常感激。

2 个答案:

答案 0 :(得分:0)

从您的描述中可以看出,您说刷新页面的频率越高,退出前的时间就越少。 Timer的interval属性以毫秒为单位进行测量,此时您的最慢设置为170个滴答,每个500毫秒。因此,您每85秒检查一下这个缺口现在是否可用。我认为你可以妥协很多,而不是将间隔设置为1000或2000。

您的另一个选择是每隔30分钟导航到登录页面并再次登录?

PS。

而不是使用:

If ((WebBrowser1.IsBusy)) Then
    Else
        'code

你可以使用:

If not WebBrowser1.IsBusy Then
    'code

看起来更容易阅读imo。

侧边栏:我认为你的程序非常酷:)

答案 1 :(得分:0)

几年后我没有使用过WebBrowser对象,但我相信你可能会陷入无休止的WebBrowser1.IsBusy。它类似于浏览页面时有时它永远不会结束加载。在这种情况下,您需要使用某种超时机制来停止WebBrowser1.Stop,然后再尝试导航到该页面。

或者只是忽略isbusy并在刷新页面之前强制停止。增加计时器,因为你的最长计时器500实际上是500毫秒,这是0.5秒 - 你的网页可能加载速度不快。