Visual Studio Express 2010 - WinForms application - Help making system.timers.timer
我之前问过这个问题,但没有得到可靠的答案。
我正在 Visual Studio Express 2010 中制作一个程序来模仿游戏 Cookie Clicker 以获得乐趣。
在 cookie clicker 中,您可以获得每秒自动生成 cookie 的项目。我正在使用一个基本的表单应用程序并且非常新,所以我基本上只知道如何修改事件。
表单计时器与表单上的其他所有内容都在同一线程上运行,因此制作表单计时器将无法工作,因为它不会在后台触发(至少我无法让它启动)
我需要帮助创建一个在单独的线程上运行的计时器,该线程将每秒循环一次,这样我就可以在计时器触发时将每秒 cookie 的值添加到 cookie 的总值中。
我当前的代码是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | 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 |
结束类
我知道代码中没有计时器,但那是因为我不知道它们是如何工作的。
如您所知,我对 VB 非常陌生,因此非常感谢 ELI5 的解释。
提前谢谢:)
您不应该在单独的线程上使用计时器来完成这样一个简单的任务。只需将 Timer 条目从 Toolbox 拖放到您的 Form 中,即可将 Timer 添加到您的主表单中。然后在"属性"窗口中选择它并将其设置为每 1000 毫秒打勾并双击表单底部的计时器以添加每 1000 毫秒触发的事件处理程序。
实际上,System.Timers.Timer 将在后台运行。订阅其 Elapsed 事件:
1 2 3 | Private Sub MyTimer_Elapsed(sender As Object, e As ElapsedEventArgs) Handles myTimer.Elapsed varcookies = varcookies + varcps End Sub |
只要计时器达到其指定周期(在您的情况下为 1 秒),就会调用此子例程。您无需创建单独的线程,它会自动执行此操作。只需确保将其 Interval 属性设置为 1 秒,并在表单的 Load 中将 Enabled 设置为 true。