Можете ли вы объяснить немного больше, что вы пытаетесь достичь.
При использовании таймера в Сервисе вам необходимо использовать System.Threading.Timer.
Если вы постоянно зацикливаетесь, загрузка вашего процессора будет стремительно расти. Если вы пытаетесь отслеживать каталог, вы можете использовать FileSystemWatcher, но это может быть хлопотно, если ваш хост-компьютер не работает под управлением Windows. Если вы пытаетесь выполнить запрос к таблице и получить результаты, она может каждые 15 секунд искать новую запись, и если новая запись существует, пометьте функцию как выполняющуюся через логическое значение, чтобы, если она все еще работает через 15 секунд, она не запустить снова.
Я приведу пример таймера в системной службе.
Private myThreadingTimer As System.Threading.Timer
Private blnCurrentlyRunning As Boolean = False
Protected Overrides Sub OnStart(ByVal args() As String)
Dim myTimerCallback As New TimerCallback(AddressOf OnTimedEvent)
myThreadingTimer = New System.Threading.Timer(myTimerCallback, Nothing, 1000, 1000)
End Sub
Private Sub OnTimedEvent(ByVal state As Object)
If Date.Now.Second = 1 Or Date.Now.Second = 15 Or Date.Now.Second = 30 Or Date.Now.Second = 45 Then
If Not blnCurrentlyRunning Then
blnCurrentlyRunning = True
Dim myNewThread As New Thread(New ThreadStart(AddressOf MyFunctionIWantToCall))
myNewThread.Start()
End If
End If
End Sub
Public Sub MyFunctionIWantToCall()
Try
'Do Something
Catch ex As Exception
Finally
blnCurrentlyRunning = False
End Try
End Sub