Mi spiego meglio... per andare a trovare dove un mio programmino si "impunta" per microsecondi (esempio nell' aprire qualche finestra o muoverla o selezionare qualche opzione) ho deselezionato qui e là finché ho visto che il problema è in questo semplicissimo codice:
Private Sub Timer_ReadPixels_Elapsed(sender As Object, e As Timers.ElapsedEventArgs) Handles Timer_ReadPixels.Elapsed
FaiQuesto1() 'leggerissimo
Beep()
Sleep(300)
FaiQuesto2() 'leggerissimo
End Sub
Il Timer è settato su 5 secondi: se muovo velocemente sul monitor una qualsiasi delle finestre del programma (esempio il FormInfo) questa si blocca
esattamente quando suona il Beep (a significare che si blocca quando si arriva allo Sleep(), che è lo scopo del Beep() di Debug), mentre il puntatore va avanti... dopo microsecondi la finestra lo raggiunge.
Se elimino il Beep() la Finestra si blocca ugualmente, se elimino lo Sleep(300)... gira come una trottola senza interruzioni.
Eppure ho bisogno di "distanziare" un attimino le due Sub... c' è modo di farlo senza "impuntare" il programma e perché si impunta?? Il Timer è nel FormMain, ma si blocca per microsecondi qualsiasi altra finestra aperta.
NOTA: il Timer è un System.Timers.Timer, quindi dovrebbe essere un Timer di Thread...