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?