Per gli intervalli non è così difficile, basta impostare un timer, impostandone il tempo che varia tra un tick e l'altro; ad ogni tick, poi usare il background worker.
I link che ti ho dato, non dicono solo come terminare un'operazione(sopratutto il primo), ma anche come fare una lista della applicazioni che sono attive.
Una bozza?
codice:
Dim WithEvents myTimer As New Timer With {.Interval = "INTERVALLO_MILLISECONDI", .Enabled = True}
Dim Withevents myBackGroundWorker As New BackGroundWorker With {.SupportsCancellation = True}
Private Sub myTimer_Tick() Handles myTimer.Tick
'Ad ogni tick del timer, controlla avvia il BackgroundWorker
myBackGroundWorker.RunWorkerAsync()
End Sub
Private Sub myBackGroundWorker_DoWork() Handles myBackGroundWorker.DoWork
Try
'Crea un array di processi
Dim npProc() As Process
'il metodo GetProcesses riempie l'array con tutti i processi in esecuzione
npProc = Process.GetProcesses
'Il ciclo iterativo For ... Next controlla ogni proc As Process
'nell'array nProc
For Each proc As Process In npProc
'Controlla se l'applicazione corrente è quella designata
If proc.ProcessName.Equals("notepad") Then
'Fai qualcosa
Exit For
'Ho scritto Exit For per chiudere il ciclo
'così il programma evita di cercare se è presente
'il processo, già precedentemente trovato.
End If
Next proc
Catch ex As Exception
'Se viene generata un'eccezione...
End Try
End Sub
L'ho fatta senza IDE, quindi potrebbe segnalarti qualcosa...
Spero di essere stato esauriente e chiaro