Visual Studio Express 2010 - WinForms 应用程序 - 帮助制作 system.timers.timer
Visual Studio Express 2010 - WinForms application - Help making system.timers.timer
我之前问过这个问题,但没有得到可靠的答案。
我正在 Visual Studio Express 2010 中制作一个程序来模仿游戏 Cookie Clicker 的乐趣。
在 cookie clicker 中,您可以获得每秒自动生成 cookie 的项目。我正在使用一个基本的表单应用程序并且是非常新的所以我基本上只知道如何修改事件。
表单计时器与表单上的其他所有内容都在同一个线程上运行,因此制作表单计时器将无法工作,因为它不会在后台触发(至少我无法做到)
我需要帮助来制作一个在单独的线程上运行的计时器,该线程每秒循环一次,这样我就可以在计时器触发时将每秒 cookie 的值添加到 cookie 的总值中。
我当前的代码是:
Public Class window
Dim varcookies As Integer = 0
Dim varcps As Decimal = 0
Dim varclickercost As Decimal = 10
Dim varclicker As Integer = 0
Private Sub Cookie_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cookie.Click
varcookies = varcookies + 1
Me.CookiesVal.Text = varcookies
End Sub
Private Sub window_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.CPSVal.Text = varcps
Me.CookiesVal.Text = varcps
Me.btnclicker.Text = varclickercost
Me.clock.Enabled = True
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnclicker.Click
If varcookies >= varclickercost Then
varcookies = varcookies - varclickercost
varcps = varcps + 0.5
varclicker = varclicker + 1
varclickercost = varclickercost * 1.5
Me.Clickers.Text = varclicker
Me.btnclicker.Text = varclickercost
Me.CookiesVal.Text = varcookies
Me.CPSVal.Text = varcps
End If
End Sub
结束Class
我知道代码中没有计时器,但那是因为我不知道它们是如何工作的。
如您所知,我是 VB 的新手,非常感谢 ELI5 的解释。
提前致谢:)
A System.Timers.Timer 实际上会在后台 运行。订阅其 Elapsed 事件:
Private Sub MyTimer_Elapsed(sender As Object, e As ElapsedEventArgs) Handles myTimer.Elapsed
varcookies = varcookies + varcps
End Sub
只要计时器达到指定时间(在您的情况下为 1 秒),就会调用此子例程。您无需创建单独的线程,它会自动执行此操作。只需确保将其间隔 属性 设置为 1 秒,并在表单的 Load.
中将 Enabled 设置为 true
您不应该在单独的线程上使用计时器来完成如此简单的任务。只需将定时器条目从工具箱拖放到您的窗体上,即可将定时器添加到您的主窗体。然后 select 在属性 window 中将其设置为每 1000 毫秒计时一次,然后双击表单底部的计时器以添加一个每 1000 毫秒触发一次的事件处理程序。
我之前问过这个问题,但没有得到可靠的答案。
我正在 Visual Studio Express 2010 中制作一个程序来模仿游戏 Cookie Clicker 的乐趣。
在 cookie clicker 中,您可以获得每秒自动生成 cookie 的项目。我正在使用一个基本的表单应用程序并且是非常新的所以我基本上只知道如何修改事件。
表单计时器与表单上的其他所有内容都在同一个线程上运行,因此制作表单计时器将无法工作,因为它不会在后台触发(至少我无法做到)
我需要帮助来制作一个在单独的线程上运行的计时器,该线程每秒循环一次,这样我就可以在计时器触发时将每秒 cookie 的值添加到 cookie 的总值中。
我当前的代码是:
Public Class window
Dim varcookies As Integer = 0
Dim varcps As Decimal = 0
Dim varclickercost As Decimal = 10
Dim varclicker As Integer = 0
Private Sub Cookie_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cookie.Click
varcookies = varcookies + 1
Me.CookiesVal.Text = varcookies
End Sub
Private Sub window_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.CPSVal.Text = varcps
Me.CookiesVal.Text = varcps
Me.btnclicker.Text = varclickercost
Me.clock.Enabled = True
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnclicker.Click
If varcookies >= varclickercost Then
varcookies = varcookies - varclickercost
varcps = varcps + 0.5
varclicker = varclicker + 1
varclickercost = varclickercost * 1.5
Me.Clickers.Text = varclicker
Me.btnclicker.Text = varclickercost
Me.CookiesVal.Text = varcookies
Me.CPSVal.Text = varcps
End If
End Sub
结束Class
我知道代码中没有计时器,但那是因为我不知道它们是如何工作的。
如您所知,我是 VB 的新手,非常感谢 ELI5 的解释。
提前致谢:)
A System.Timers.Timer 实际上会在后台 运行。订阅其 Elapsed 事件:
Private Sub MyTimer_Elapsed(sender As Object, e As ElapsedEventArgs) Handles myTimer.Elapsed
varcookies = varcookies + varcps
End Sub
只要计时器达到指定时间(在您的情况下为 1 秒),就会调用此子例程。您无需创建单独的线程,它会自动执行此操作。只需确保将其间隔 属性 设置为 1 秒,并在表单的 Load.
中将 Enabled 设置为 true您不应该在单独的线程上使用计时器来完成如此简单的任务。只需将定时器条目从工具箱拖放到您的窗体上,即可将定时器添加到您的主窗体。然后 select 在属性 window 中将其设置为每 1000 毫秒计时一次,然后双击表单底部的计时器以添加一个每 1000 毫秒触发一次的事件处理程序。