vb.net - matrices - suma de filas y columnas de una matriz en visual basic
¿Cómo retraso la ejecución del código en Visual Basic(VB6)? (7)
Divide tu código en 2 procesos. Ejecute el primero, luego ejecute su "proceso de larga ejecución", luego ejecute el segundo proceso.
Tengo un proceso de larga ejecución en VB6 que quiero terminar antes de ejecutar la siguiente línea de código. ¿Cómo puedo hacer eso? Función incorporada? ¿Puedo controlar cuánto tiempo debo esperar?
Ejemplo trivial:
Call ExternalLongRunningProcess
Call DoOtherStuff
¿Cómo retraso el ''DoOtherStuff''?
Ejecute su proceso de larga ejecución en el medio de su proceso actual y espere a que se complete.
VB.Net: Utilizaría un identificador de evento WaitOne .
VB 6.0: He visto un DoEvents Loop.
Do
If isSomeCheckCondition() Then Exit Do
DoEvents
Loop
Finalmente, puedes simplemente dormir:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sleep 10000
Cómo determinar cuándo ha finalizado un proceso descascarado
Si llama a un proceso externo, en realidad lo llama de manera asíncrona. Consulte el documento de soporte de MS anterior para saber cómo esperar hasta que se complete su proceso externo.
System.Threading.Thread.Sleep(500)
Si bien la respuesta de Nescio (DoEvents) funcionará, su aplicación usará el 100% de una CPU. El sueño hará que la IU no responda. Lo que necesitas es una combinación de los dos, y la combinación mágica que parece funcionar mejor es:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
While IsStillWaitingForSomething()
DoEvents
DoEvents
Sleep(55)
Wend
¿Por qué dos DoEvents y uno duermen durante 55 milisegundos? El tiempo de espera de 55 milisegundos es la porción más pequeña que puede manejar VB6, y el uso de dos DoEvents a veces es necesario en instancias en las que se necesita una gran capacidad de respuesta (no por la API, pero si la aplicación responde a eventos externos, SendMessage, Interupts, etc. )
Me gustaría que simplemente añadieras .NET Framework System.dll o lo que sea a las referencias de tu proyecto para que puedas hacer esto:
Dim ALongTime As Integer = 2000
System.Threading.Thread.Sleep(ALongTime)
...cada vez. Tengo VB6 y VB.net 2008 en mi máquina, y siempre es difícil para mí cambiar de IDE muy diferentes.