我有一个每 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 秒经过一次停止计时器运行队列,然后当队列完成时,它应该再次启动计时器我是否有这种想法?并且在队列完成之前计时器无法重新启动它自己?
谢谢