La domanda è assolutamente di studio....

Mi rendo conto che il titolo non è molto indicativo, ma mi spiego meglio con un esempio.

Con un Timer controllo se appare una certa finestrella sullo schermo e la chiudo automaticamente:

codice:
'prima tutta una serie di controlli per vedere se la finestrella è
'visibile e per leggerne la posizione... poi il  codice  per chiuderla
'dove WinX e WinY sono coordinate interne al pulsante di chiusura.

Debug.Print("Clicco per chiudere la finestrella")
Cursor.Position = New Point(WinX, WinY)

NativeMethods.Mouse_Event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, IntPtr.Zero)
NativeMethods.Mouse_Event(MOUSEEVENTF_LEFTUP, 0, 0, 0, IntPtr.Zero)
la finestrella si chiude immediatamente... MA ORA LA DOMANDA "TECNICA"

Ho aggiunto per controllo uno sleep al codice (in realtà sono diversi sleep e altro codice di controllo, ma "semplifico" perché la domanda non cambia:

codice:
Debug.Print("Clicco per chiudere Buy In")
Cursor.Position = New Point(WinX, WinY)

NativeMethods.Mouse_Event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, IntPtr.Zero)
NativeMethods.Mouse_Event(MOUSEEVENTF_LEFTUP, 0, 0, 0, IntPtr.Zero)

Sleep (5000)
ebbene... anche se la scritta ("Clicco per chiudere la finestrella") appare immediatamente.... la finestrella si chiude poi dopo 5 secondi!! Anche se lo "Sleep" è SEGUENTE al codice che preme il pulsante.

Come mai? In VB le istruzioni vengono "immagazzinate" da qualche parte ed ESEGUITE solo quando il codice raggiunge la fine della routine??

E se la risposta è si... chè un qualche "controcodice" che le faccia agire subito?