Visual Basic新手,需要帮助制作后台计时器

时间:2015-02-19 04:33:26

标签: vb.net multithreading winforms visual-studio-2010 timer

我刚刚上学开始使用Visual Basic,课程进展非常缓慢,而且我学不太多,所以我试图继续前进并做一些实验。 我正在尝试制作Cookie Clicker的克隆游戏,我需要让每秒点击量工作 我尝试使用内置的计时器并在代码中执行一个简单的添加语句,但很快就意识到内置计时器仅在单独使用时才有效。我在运行游戏时无法让它在后台运行。

我尝试使用system.threading.thread.timer,但不是很成功,因为我是VB的新手。这是我目前的代码

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
End Class

任何帮助都会受到赞赏,以使计时器线程正常工作。

在此之前,这不是功课,我只是为了好玩而这样做。在课堂上,我们正在探索广泛的文本框。

谢谢:)

1 个答案:

答案 0 :(得分:1)

以下是计时器的工作原理:

  1. 启用或启动计时器(计时器方法)。
  2. 它运行指定的时间间隔(计时器属性)。
  3. 它会引发一个timer.Tick事件并调用事件处理程序。
  4. 例如,您可以将间隔设置为1000毫秒,然后每秒写一次您想要执行的代码并将其放在timer.click处理程序中。

    与计时器的常见错误是:

    1. 您需要使用timer.enabled或timer.start启动它。

    2. 您可能需要在tick处理程序中重置计时器,具体取决于计时器和属性设置的类型。 (有定时器控件,system.timers.timer和system.threading.timer,每个都有一点不同。)

    3. 您可能需要在tick处理程序中暂时禁用它,以确保它不会重新进入处理程序并导致问题。

    4. 更多信息:https://msdn.microsoft.com/en-us/library/system.timers.timer%28v=vs.110%29.aspx