1. Программа работает как Windows Service представляет собой бесконечный цикл.
Умудряюсь запустить этот цикл таким образом
Protected Overrides Sub OnStart(ByVal args() As String)
Timer1.False
...
bAbort = False ' Выход из цикла
...
Timer1.Interval = 2000
Timer1.True
End Sub
Private Sub Timer1_Elapsed(ByVal sender As System.Object, ByVal e As System.Timers.ElapsedEventArgs) Handles Timer1.Elapsed
Timer1.False
Poll()
End Sub
Private Sub Poll()
...
Do While (bAbort = False)
... ' Основная часть программы
Loop
...
End Sub
Protected Overrides Sub OnStop()
bAbort = False
...
End Sub
Если я использовал процедуру Poll() в Windows приложении то выход из цикла по bAbort работает нормально, когда как написано выше то сервис нормально не останавливается.
Вопрос как организовать Windows Service — основная часть программы это бесконечный цикл.
Как этот цикл запустить с помощью OnStart и остановить с помощью OnStop
2. Есть ли в Windows Service аналог Application.DoEvents()
Проблема: программа работает с определенными устройствами через сеть. Я использую функции из DLL производителя устройств.
В фазе между инициализацией устройств и нормальной работой нужно сделать паузу около 2 сек.
System.Threading.Thread.Sleep(2000) – не помогает.
В Windows приложении я использовал Timer + Application.DoEvents() и все работало нормально.
Чем заменить Application.DoEvents() в Windows Service