Cómo implementar programas multiproceso estables en VB
El código relevante es el siguiente:
Private Const MyEvent As String = "m5home"
Dim hEvent As Long
Sub Main ()
Si GetEventHandle = 0 Entonces 'Dado que se crea cada nuevo objeto, se debe ejecutar el proceso Main(), por lo que el objeto de evento se utiliza para juzgar.
hEvent = CreateEvent (0amp;, False, False, MyEvent) 'Bajo el hilo de la unidad, las variables globales en el módulo ya no son útiles.frmMain.Show
End If
End Sub p>
Función privada GetEventHandle() siempre que
GetEventHandle = OpenEvent(EVENT_ALL_ACCESS, False, MyEvent)
Llamar a CloseHandle(GetEventHandle)
Finalizar función
Función pública Salir()
Llamar a CloseHandle(hEvent)
Finalizar función
Privada Const MyEvent As String = "m5home"
Dim hEvent As Long
Sub Main() Si GetEventHandle = 0 Entonces 'Dado que se crea cada nuevo objeto, el proceso Main() debe ejecutarse, por lo que el objeto de evento se utiliza para juicio.
hEvent = CreateEvent(0amp;, False, False, MyEvent) 'Bajo el hilo de la unidad, las variables globales en el módulo ya no son útiles.frmMain.Show
Fin Si
End Sub
Función privada GetEventHandle() siempre que GetEventHandle = OpenEvent(EVENT_ALL_ACCESS, False, MyEvent)
Llamar a CloseHandle(GetEventHandle)
Función final p>
Función pública Quit()
Llamar a CloseHandle(hEvent)
Función final
Dado que el objeto de evento es en todo el sistema, se puede comparar perfectamente. Complete este trabajo.
Al mismo tiempo, el objeto de evento se liberará automáticamente después de que desaparezca el proceso, lo cual también es conveniente :)
El código de muestra puede generar un nuevo subproceso unitario y ejecutarlo en este subproceso. Muestra un formulario y el formulario realiza un bucle grande.
No hay ninguna función DoEvents en el bucle, por lo que el formulario donde se realiza el bucle. donde se encuentra dejará de responder.
En este momento, el formulario principal No afectado.