Thread.Sleep()带有计时器

问题描述 投票:0回答:1

我有一个选项的选项,可以根据设置的时间表运行。因此,我编写了下面提供的代码。

Private WithEvents tmr_Imp_Pms_File As New Timers.Timer(950) 'for PMS File

Private Sub tmr_Imp_Pms_File_Elasped(ByVal sender As System.Object, ByVal e As Timers.ElapsedEventArgs) Handles tmr_Imp_Pms_File.Elapsed

Thread.Sleep(50)

     Select Case .Enable_Schedule
                Case 1 ' Schedule - Daily Option
                    If .Enable_Daily_Option_1 = 1 Then
                        If _
                            TimeSerial(Now.Hour, Now.Minute, Now.Second) =
                            TimeSerial(.Daily_Option_1_Time.Hour, .Daily_Option_1_Time.Minute,
                                       .Daily_Option_1_Time.Second) Then

                            logger.log.Info("Checking Running Daily Schedule Option 1, " & Now.ToString)

                        End If
                    End If


                    If .Enable_Daily_Option_2 = 1 Then
                        If _
                            TimeSerial(Now.Hour, Now.Minute, Now.Second) =
                            TimeSerial(.Daily_Option_2_Time.Hour, .Daily_Option_2_Time.Minute,
                                       .Daily_Option_2_Time.Second) Then

                            logger.log.Info("Checking Running Daily Schedule Option 2, " & Now.ToString)

                        End If
                    End If


                    If .Enable_Daily_Option_3 = 1 Then
                        If _
                            TimeSerial(Now.Hour, Now.Minute, Now.Second) =
                            TimeSerial(.Daily_Option_3_Time.Hour, .Daily_Option_3_Time.Minute,
                                       .Daily_Option_3_Time.Second) Then

                            logger.log.Info("Checking Running Daily Schedule Option 3, " & Now.ToString)

                        End If
                    End If
     End Select

        End Sub

这里我有3个时间表选项,我为我的程序启用了所有3个时间表。但是有一个随机且很少发生的问题,程序将跳过运行的第二个选项。我相信这与下面显示的这个部分有关。

 " TimeSerial(Now.Hour, Now.Minute, Now.Second) =
                        TimeSerial(.Daily_Option_1_Time.Hour, .Daily_Option_1_Time.Minute,
                                   .Daily_Option_1_Time.Second) Then"

我怎样才能增强这段代码来解决问题?有没有其他方法来编写代码? “我知道有......”但有人可以告诉我一些更好的方法来处理这个问题。

感谢您的帮助,提前感谢。

asp.net .net vba vb.net thread-sleep
1个回答
0
投票

我找到了答案,下面是解决问题的方法。

       Private WithEvents tmr_Imp_Pms_File As New Timers.Timer(950) 'for PMS File

       Private Sub tmr_Imp_Pms_File_Elasped(ByVal sender As System.Object, ByVal e As Timers.ElapsedEventArgs) Handles tmr_Imp_Pms_File.Elapsed

            Select Case .Enable_Schedule
                       Case 1 ' Schedule - Daily Option
                           If .Enable_Daily_Option_1 = 1 Then
                               If _
                                   TimeSerial(Now.Hour, Now.Minute, Now.Second) =
                                   TimeSerial(.Daily_Option_1_Time.Hour, .Daily_Option_1_Time.Minute,
                                              .Daily_Option_1_Time.Second) Then


                               logger.log.Info("Daily Schedule Option 2 Hit, " & Now.ToString("HH:mm:ss.fff"))

                               tmr_Imp_Pms_File.Stop() : Thread.Sleep(50)

                               End If
                           End If


                           If .Enable_Daily_Option_2 = 1 Then
                               If _
                                   TimeSerial(Now.Hour, Now.Minute, Now.Second) =
                                   TimeSerial(.Daily_Option_2_Time.Hour, .Daily_Option_2_Time.Minute,
                                              .Daily_Option_2_Time.Second) Then


                               logger.log.Info("Daily Schedule Option 2 Hit, " & Now.ToString("HH:mm:ss.fff"))

                               tmr_Imp_Pms_File.Stop() : Thread.Sleep(50)

                               End If
                           End If


                           If .Enable_Daily_Option_3 = 1 Then
                               If _
                                   TimeSerial(Now.Hour, Now.Minute, Now.Second) =
                                   TimeSerial(.Daily_Option_3_Time.Hour, .Daily_Option_3_Time.Minute,
                                              .Daily_Option_3_Time.Second) Then


                               logger.log.Info("Daily Schedule Option 2 Hit, " & Now.ToString("HH:mm:ss.fff"))

                               tmr_Imp_Pms_File.Stop() : Thread.Sleep(50)

                               End If
                           End If
            End Select

               End Sub
   ```
© www.soinside.com 2019 - 2024. All rights reserved.