Vb.net 程序在30分钟后没有响应
我有一个应用程序,我可以登录到社会网络,并不断检查,看看什么时候不活跃的帐户被重置。在这个例子中,我使用Xbox网站上的免费玩家代号更改来查看这些名字何时被重置。我创建了一个应用程序,在其中我登录Xbox.com并导航到webbrowser上的change gamertag页面,在文本框(一个不活动的标签,很快就会重置)中键入我想要的gamertag,在文本框中我点击“Autoclick”按钮,它会不断尝试声明帐户名。所以我创建了这个脚本,但后来我意识到它会超时太快。这个程序在高速上只能持续10分钟左右(有3种速度,慢速-中速-中速),但在慢速上会持续更长的时间。然而,我意识到我必须每隔几秒钟刷新一次页面,这样页面才能工作更长时间。一旦我这样做了,应用程序的耐用性就会大大提高,并且持续了30多分钟。然而,它仍然超时。有些人会把这些脚本写上好几天,但我的目标只是一天。所以我想问,是否有人知道我如何改进这一点?这是我剧本的一部分。我有一个按钮,一旦点击,计时器就会自动点击索赔按钮 所以我的按钮:Vb.net 程序在30分钟后没有响应,vb.net,browser,refresh,Vb.net,Browser,Refresh,我有一个应用程序,我可以登录到社会网络,并不断检查,看看什么时候不活跃的帐户被重置。在这个例子中,我使用Xbox网站上的免费玩家代号更改来查看这些名字何时被重置。我创建了一个应用程序,在其中我登录Xbox.com并导航到webbrowser上的change gamertag页面,在文本框(一个不活动的标签,很快就会重置)中键入我想要的gamertag,在文本框中我点击“Autoclick”按钮,它会不断尝试声明帐户名。所以我创建了这个脚本,但后来我意识到它会超时太快。这个程序在高速上只能持续10
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
我不知道有多少方法可以让它持续更长的时间,但如果有人对如何做到这一点有任何线索,我将非常感谢 根据您的描述,您似乎在说,刷新页面的频率越高,注销前的时间就越短。计时器的interval属性是以毫秒为单位测量的,此时最慢的设置是每500毫秒170个刻度。所以你每85秒检查一次尼克现在是否有空。我认为,你可以在这方面做出很多妥协,而不是将间隔设置为1000或2000 您的另一个选择是每30分钟导航到登录页面,然后再次登录 附言 而不是使用:
If ((WebBrowser1.IsBusy)) Then
Else
'code
您可以使用:
If not WebBrowser1.IsBusy Then
'code
它看起来更容易阅读
侧边栏:我觉得你的程序很酷:)我已经好几年没有使用WebBrowser对象了,但我相信你可能会被无尽的
WebBrowser1卡住。我很忙。它类似于当你浏览到一个页面,有时它永远不会结束加载。在这种情况下,您需要使用某种超时机制来停止WebBrowser1。停止,然后再次尝试导航到页面
或者干脆忽略isbusy并在刷新页面之前强制停止。增加计时器,因为您的最长计时器500实际上是500毫秒,即0.5秒-您的网页加载可能没有那么快