10秒ごとに実行されるキューがあります:
Private Sub Form1Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
Dim t As New Timers.Timer(10000)
AddHandler t.Elapsed, New ElapsedEventHandler(AddressOf Elapsed)
t.Start()
End Sub
Private Sub Elapsed(ByVal sender As Object, ByVal e As ElapsedEventArgs)
Dim timer1 As Timers.Timer = DirectCast(sender, Timers.Timer)
Try
' disable temporarily
timer1.Stop()
_quemanager.StartProcessing()
Thread.Sleep(1000)
Finally
' make sure that the handler is always reenables
timer1.Start()
End Try
End Sub
Namespace Managers
Public Class QueueManager
Private ReadOnly _items As New Queue
Public Sub StartProcessing()
For Each x In From i In File.GetAllAccountFolders() From x1 In File.CheckFolderForFiles(i & "\In") Select x1
_items.Enqueue(x)
Next
Dim t1 As New Threading.Thread(AddressOf Process)
t1.Start()
End Sub
Private Sub Process()
Do
SyncLock _items.SyncRoot
If _items.Count = 0 Then
'No more items.
Logger.Log("QueueManager", "Process", "No Items In Queue")
Exit Do
End If
Logger.Log("QueueManager", "Process", "Processing File: " & _items.Peek)
FileProcessingManager.ProcessFile(_items.Peek)
_items.Dequeue()
End SyncLock
Loop
End Sub
End Class
End Namespace
この背後にあるロジックは、タイマーが10秒ごとに経過するとタイマーが停止し、キューが実行され、キューが終了すると再びタイマーを開始する必要があるということです。キューが終了するまで、タイマーが自己を再起動する方法はありませんか?
ありがとう