Compartir a través de


Consideraciones sobre los subprocesos

La grabadora de componentes en cola COM+ es capaz de ejecutarse en el apartamento multiproceso del proceso (MTA) o en un apartamento de un solo subproceso (STA). Cuando la grabadora se ejecuta en STA, COM+ requiere que cada apartamento que contenga objetos debe tener una cola message Queuing para controlar las llamadas de otros procesos y apartamentos dentro del mismo proceso. Esto significa que la función de trabajo del subproceso debe tener un bucle de mensajes. Cuando se crea una instancia de un componente en cola, el puntero de interfaz devuelto siempre es un puntero de interfaz proxy en lugar de un puntero de interfaz directa. El puntero es realmente una referencia a una instancia de la grabadora. Si esta referencia de interfaz de grabadora se pasa a otro subproceso, el subproceso original debe seguir ejecutando el bucle de mensajes de Windows para que el subproceso receptor pueda desmarmar la interfaz. Si no es así, el subproceso receptor se bloquea en una llamada a CoUnmarshalInterface.

Si usa primitivos para sincronizar los subprocesos, considere la posibilidad de usar MsgWaitForMultipleObjects en lugar de otras funciones de sincronización. Esto comprueba si hay mensajes en la cola, así como el estado del objeto de sincronización.