#asp.net #.net #vba #vb.net #thread-sleep
#asp.net #.net #vba #vb.net #поток-спящий режим
Вопрос:
У меня есть выбор опций, которые могут выполняться в соответствии с установленными расписаниями. Поэтому я написал приведенный ниже код.
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, " amp; 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, " amp; 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, " amp; 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"
Как я могу улучшить этот фрагмент кода, чтобы решить проблему?
Существуют ли какие-либо другие способы написания кода? «Я знаю, что есть …» но может кто-нибудь показать мне какой-нибудь пример лучшего способа справиться с этой проблемой.
Ценю вашу помощь, заранее благодарю.
Ответ №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
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, " amp; 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, " amp; 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, " amp; Now.ToString("HH:mm:ss.fff"))
tmr_Imp_Pms_File.Stop() : Thread.Sleep(50)
End If
End If
End Select
End Sub
```