在Visual Studio 2013中的某个时间停止计时器

时间:2014-03-04 17:18:56

标签: vb.net timer

我正在尝试播放并在我输入文本框的某个时间停止计时器,因为我想在完成时间后播放音频。 你能帮助我吗?

这是我的代码:

Private Sub Simulate_Click(sender As Object, e As EventArgs) Handles Simulate.Click
    AxWindowsMediaPlayer1.Show()

    AxWindowsMediaPlayer1.Ctlcontrols.play()
    AxWindowsMediaPlayer1.Ctlcontrols.fastForward()
    Simulate.Enabled = False




    If TextBox1.Text = 1 Then
        My.Computer.Audio.Play(My.Resources._1, AudioPlayMode.Background)
    ElseIf TextBox1.Text = 2 Then
        My.Computer.Audio.Play(My.Resources._2, AudioPlayMode.Background)

如果我输入说例如2秒,则播放音频文件需要两秒钟。

3 个答案:

答案 0 :(得分:1)

在表单上删除一个计时器控件,并将其设置为您希望停止的时间间隔。在计时器的勾选事件中,禁用计时器,使其不再发射,然后播放您的声音。

在将Enabled属性设置为true后,计时器将在X毫秒内触发。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    tmrAlarm.Interval = TimeSpan.FromSeconds(2).TotalMilliseconds
    tmrAlarm.Enabled = True
End Sub

Private Sub tmrAlarm_Tick(sender As Object, e As EventArgs) Handles tmrAlarm.Tick
    tmrAlarm.Enabled = False
    MsgBox("Beep!")
End Sub

在此示例中,按下按钮后2秒将弹出一个消息框。 它需要将Timer控件放在名为tmrAlarm的表单上。

此方法可让您的应用程序保持响应,而无需担心复杂的多线程问题。

答案 1 :(得分:0)

如果您不关心应用程序响应能力,那么简单的System.Threading.Thread.Sleep(timeInSeconds * 1000)就可以解决问题。这将锁定应用程序的睡眠时间。

如果响应性是一个问题,您需要播放音频作为对您将创建的新事件的响应。然后你需要启动一个睡眠的新线程,并在睡眠后引发你的新事件。

答案 2 :(得分:0)

你必须添加一个名为“Timer1”的计时器才能工作。如果文本框包含数字“1”,则时间设置为1000毫秒并启动计时器,当1000毫秒启动时,它将开始播放声音,然后停止计时器。

Public Class Form1
        Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
            If TextBox1.Text.Contains("1") Then
                Timer1.Interval = ("1000")
                Timer1.Start()
            ElseIf TextBox1.Text.Contains("2") Then
                Timer1.Interval = ("2000")
                Timer1.Start()
            End If
        End Sub

        Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
            Timer1.Stop()
            My.Computer.Audio.Play(My.Resources._1, AudioPlayMode.Background)

        End Sub


    End Class