2008-09-21 19 views

Respuesta

14

VB6 no es un entorno realmente bueno para aplicaciones de subprocesos múltiples. No hay soporte listo para usar, necesita profundizar en las funciones estándar WinAPI. Echar un vistazo a este artículo, que ofrece una muestra bastante amplia:

http://www.freevbcode.com/ShowCode.Asp?ID=1287

9

en varios proyectos que he implementado el procesamiento asincrónico en VB6 utilizando múltiples procesos. Básicamente tener un hilo de trabajo dentro de un proyecto de exe activo que está separado del proceso principal. El exe de trabajador puede pasar los datos que necesita e iniciar, levantando un evento para decir que está terminado o hay datos para el proceso principal.

Es un recurso que requiere más recursos (un proceso adicional en lugar de un hilo) pero VB6 se ejecuta en un único apartamento con hilos y no tiene ningún soporte integrado para iniciar nuevos hilos.

Si realmente necesita tener múltiples hilos dentro de un proceso, le sugiero que use .net o VC6 en lugar de VB6.

2

Si el problema que está tratando de resolver es un cálculo largo y desea mantener la IU receptiva, entonces una posibilidad es llamar con frecuencia a la función DoEvents dentro de su largo cálculo. De esta manera, su programa puede procesar cualquier mensaje de Windows y, por lo tanto, la IU responderá a los comandos del usuario. También puede configurar un botón Cancelar para señalar su proceso que necesita finalizar.

Si hace esto, tendrá que tener cuidado de deshabilitar cualquier control que pueda causar un problema, como ejecutar el proceso largo una segunda vez después de que haya comenzado.

0

Puede usar el Interop Forms Toolkit 2.0 para multihebra en VB6. El Toolkit le permite aprovechar las características de .NET sin tener que pasar por una actualización. Por lo tanto, también puede usar .NET User Controls como controles ActiveX en VB6.

Cuestiones relacionadas