2013-03-15 3 views
0

У меня есть Sub, который обрабатывается при создании нового окна. Он загружает и воспроизводит mp3-файл, используя библиотеку Irrklang. Но как обновить игру. Я слышал, что могу использовать таймер, но как использовать его внутри суб?Обновить текст текстового блока в каждую секунду в VB Net

Private Sub MainWindow_Loaded(sender As Object, e As RoutedEventArgs) 

    Dim Music = MyiSoundengine.Play2D("Music/001.mp3") 

    I Want to update this in every sec! 
    Dim Music_Playposition = Music.Playpostion 

    End Sub 

ответ

0

Вы не можете использовать таймер внутри метода/под. Единственный способ работы таймера - периодически поднимать события; в случае таймера это называется событием «Tick», которое увеличивается каждый раз, когда таймер «тикает».

Возможно, вы уже знаете, что такое события: ваш метод MainWindow_Loaded обрабатывает один, событие Loaded класса MainWindow.

Так что вам нужно добавить таймер в ваше приложение, обработать его событие Tick и внутри этого обработчика событий обновить текстовое поле с текущей позицией.

Например:

Public Class MainWindow 

    Private WithEvents timer As New System.Windows.Threading.DispatcherTimer() 

    Public Sub New() 
     ' Initialize the timer. 
     timer.Interval = new TimeSpan(0, 0, 1); ' "tick" every 1 second 

     ' other code that goes in the constructor 
     ' ... 
    End Sub 

    Private Sub timer_Tick(sender As Object, e As EventArgs) Handles timer.Tick 
     ' TODO: Add code to update textbox with current position 
    End Sub 

    Private Sub MainWindow_Loaded(sender As Object, e As RoutedEventArgs) 
     ' Start the timer first. 
     timer.Start() 

     ' Then start playing your music. 
     MyiSoundengine.Play2D("Music/001.mp3") 
    End Sub 

    ' any other code that you need inside of your MainWindow class 
    ' ... 

End Class 

Обратите внимание на использование WithEvents ключевого слова в объявлении класса уровня объекта таймера. Это упрощает обработку событий, используя только инструкции Handles обработчика событий. В противном случае вы должны использовать AddHandler внутри конструктора, чтобы связать методы обработчика событий с желаемыми событиями.

Смежные вопросы