visual tareas segundo programacion plano parametros net metodos hilos funcionamiento ejemplos creación con multithreading vb6

multithreading - tareas - programacion de hilos c#



Para usar hilo en la programación en vb6 (5)

Puede que no sea posible, pero es posible que desee considerar cambiar a .NET, donde VB tiene soporte completo para el enhebrado.

Otro enfoque atrevido (no muy bueno, pero funciona) podría incluir un exe para hacer el trabajo, y hacer que tu VB6 simplemente sondee para encontrar un archivo de resultados. Este será un proceso separado, por lo que completamente (s) thread (s) aislado (s). Muy complicado, y no lo recomiendo.

Estoy programando para generar claves en hexadecimal utilizando diferentes funciones aleatorias y escribirlas en el archivo de texto. Solo tengo dos botones cmd y una barra de estado que muestra la hora actual y el estado del proceso. Ahora, al hacer clic en el botón cmd para la generación de claves, el formulario se bloquea y todas las otras actividades se suspenden, es decir, el tiempo se suspende hasta que el proceso termina. incluso no puedo abortar el proceso en el medio. Quiero resolver este problema usando el hilo si es posible. ¿Cómo hago eso por favor sugiero? De lo contrario, si hay algún otro método para resolver este problema, sugiéralo.

Gracias a la espera de la valiosa ayuda


Puede usar la API CreateThread Win32, pero tenga en cuenta que el depurador VB6 no puede manejar varios hilos.

Además, si tiene bucles de cualquier tipo, intente abofetear "DoEvents" en algún lugar del ciclo. Se reducirá drásticamente el rendimiento, pero sus formularios serán receptivos.


También puede iniciar un proceso secundario a través de CreateProcess y redirigir las transmisiones StdIO para IPC. Anonymous Pipe I / O no es casi el truco que sería tratar de comunicarse a través de archivos de disco.

Hay algunos componentes gratuitos disponibles para hacer esto.

http://www.xtremevbtalk.com/showpost.php?p=1304628&postcount=4


La única forma "legal" de realizar subprocesos múltiples en VB6 es a través de ActiveX EXEs; solo use la opción de subprocesos por objeto en el cuadro de diálogo de propiedades del proyecto. Matt Curland tiene un buen ejemplo de cómo convertir su EXE estándar a un EXE ActiveX de subprocesos múltiples. Hacerlo de esta manera permite que el depurador VB6 funcione sin bloqueos porque en el IDE todo se ejecuta en un único hilo.

Si desea reducir la sobrecarga de ActiveX EXE multi-threading, entonces tiene que utilizar in-proc multi-threading que no es compatible, pero aún es factible. Verifique Multi-threading en proceso compacto: FolderWatcher con UI de muestra para una manera segura de usar CreateThread y para inicializar de forma segura el tiempo de ejecución de VB6 en el nuevo hilo (cortesía de Matt Curland nuevamente).

Es posible que desee consultar su libro Advanced Visual Basic 6 para más detalles.


Creo que el método Matt Curland ActiveX exe es el método clásico. Alternativamente, puede usar DoEvents . O delegue el trabajo a un exe ActiveX por separado como este . También sería bueno para ti usar el componente .NET BackgroundWorker, pero resulta que eso no funciona .