【问题标题】:New to Visual Basic, Need help making background timersVisual Basic 新手,需要帮助制作后台计时器
【发布时间】:2015-02-19 04:33:26
【问题描述】:

我刚开始在学校学习 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

如果能帮助计时器线程正常工作,我们将不胜感激。

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

谢谢:)

【问题讨论】:

  • 首先你的定时器代码在哪里?以及您的错误或问题到底是什么。其次,它看起来像是一个 WinForms 应用程序,所以我会考虑改用 System.Windows.Forms.Timer。
  • 我删除了计时器代码,因为我什么也做不了。这就是我请求帮助的原因。计时器控件与表单在同一个线程上运行,因此如果我使用它,它不会与表单上的其他任何东西同时运行。

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


【解决方案1】:

计时器的工作原理如下:

  1. 启用或启动计时器(计时器方法)。
  2. 它按指定的时间间隔运行(计时器属性)。
  3. 它引发 timer.Tick 事件并调用事件处理程序。

例如,您可以将间隔设置为 1000 毫秒,然后编写您希望每秒执行一次的代码并将其放入 timer.click 处理程序中。

定时器的常见错误是:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    相关资源
    最近更新 更多