Таймер във VB.NET
2 отговора
42 прегледа
Таймер във VB.NET
Ето проблема. Пиша следния таймер:
Imports System
Imports System.Threading
Imports System.Timers
Private Sub EnableTimer(ByRef iInterval As Integer)
'Create the timer
Dim aTimer As System.Timers.Timer
aTimer = New System.Timers.Timer
AddHandler aTimer.Elapsed, AddressOf OnTimer
aTimer.Interval = 100
aTimer.Enabled = True
End Sub
Public Sub OnTimer(ByVal source As Object, ByVal e As ElapsedEventArgs)
Me.Refresh()
End Sub
При всяко запалване на таймера обаче се чисти предната страница и се представя само новата. Представете си, че искате да изпишете непрекъсната крива на екрана, състояща се от отделни точки, чиито стойности се получават от някакво външно устройство при всяко запалване на таймера. С горния таймер, при представяне на екрана на всяка точка, предишната точка се изтрива. И така се получава само една единствена движеща се през екрана точка. Целият проблем изглежда е да се замени това Me.Refresh() горе с нещо, което да не трие предния екран. Опитах какво ли не, но нищо не върши работа – нито Me.Show(), нито, разбира се, Me.Invalidate() нито нищо. Не става и не става. Някой има ли идея как може да се реши този проблем?
Imports System
Imports System.Threading
Imports System.Timers
Private Sub EnableTimer(ByRef iInterval As Integer)
'Create the timer
Dim aTimer As System.Timers.Timer
aTimer = New System.Timers.Timer
AddHandler aTimer.Elapsed, AddressOf OnTimer
aTimer.Interval = 100
aTimer.Enabled = True
End Sub
Public Sub OnTimer(ByVal source As Object, ByVal e As ElapsedEventArgs)
Me.Refresh()
End Sub
При всяко запалване на таймера обаче се чисти предната страница и се представя само новата. Представете си, че искате да изпишете непрекъсната крива на екрана, състояща се от отделни точки, чиито стойности се получават от някакво външно устройство при всяко запалване на таймера. С горния таймер, при представяне на екрана на всяка точка, предишната точка се изтрива. И така се получава само една единствена движеща се през екрана точка. Целият проблем изглежда е да се замени това Me.Refresh() горе с нещо, което да не трие предния екран. Опитах какво ли не, но нищо не върши работа – нито Me.Show(), нито, разбира се, Me.Invalidate() нито нищо. Не става и не става. Някой има ли идея как може да се реши този проблем?
Re: Таймер във VB.NET
She si pazish dannite v masiv i ste si gi risuvash na Paint eventa.
Ostatyka go pishe v helpa. :)
Ostatyka go pishe v helpa. :)
Re: Таймер във VB.NET
Много благодаря. Така се получи, че тъкмо го направих и ти отворих постинга. Благодаря все пак. Решението е наистина много просто. Просто решение има и въпросът, който зададох в един друг постинг за това как да направим стойностите на масив общи за всички форми. Ами, просто ги обявяваме Public в модула. Направих го и по един измъчен начин с data structure, но така с модула е много елегантно.