私は、外部デバイスによって生成された 5 つの個別のイベントに反応し、一定の遅延後に何かを行う必要があるプロジェクトに取り組んでいます。イベントは通常、一度に 1 つずつ発生しますが、同時に発生することもあります。これは悪い考えですか? もしそうなら、それはなぜですか?
Imports System.Windows.Threading
Class MainWindow
Private TimerList As List(Of DispatcherTimer)
Private Sub Window_Loaded(ByVal sender As System.Object,
ByVal e As ystem.Windows.RoutedEventArgs) Handles MyBase.Loaded
TimerList = New List(Of DispatcherTimer)
'Create 5 timers for the 5 events from external device
For i As Integer = 1 To 5
TimerList.Add(
New DispatcherTimer(TimeSpan.FromSeconds(10), DispatcherPriority.Normal,
New System.EventHandler(AddressOf tmr_Tick),
Me.Dispatcher) With {.Tag = i}
)
Next
End Sub
Public Sub SomeEventFromExternalDevice(ByVal ID As Integer) 'handles...
Dim CurTimer = TimerList.Find(Function(x) x.Tag = ID)
If Not CurTimer Is Nothing Then
CurTimer.Start()
End If
End Sub
Private Sub tmr_Tick(ByVal sender As Object, ByVal e As System.EventArgs)
Dim ID = DirectCast(sender.tag, Integer)
Dim curTimer = TimerList.Find(Function(x) x.Tag = ID)
curTimer.Stop()
Select Case ID
'change something on the UI to indicate that event x timer has elapsed
End Select
End Sub
End Class