2010-02-24 10 views
5

En una configuración de Windows simple, tenemos un singleton COM que se ejecuta como un servidor fuera de proceso.¿Qué determina cuánto tarda un servidor COM fuera de proceso en darse cuenta de que un cliente ha muerto?

Los clientes se conectan llamando a cocreate y cada uno recibe una interfaz para la misma instancia del servidor.

Si los clientes cierran normalmente, publican sus referencias.

El servidor tiene un poco de lógica que lo mantiene activo durante un breve tiempo después de la última versión para permitir nuevas conexiones.

Me interesa un caso especial: el servidor se ejecuta con un solo cliente que se bloquea (considere que se trata de un bloqueo aleatorio desconocido) y el cliente sale sin haber publicado sus referencias.

Observo que después de un período de tiempo indefinido, digamos 8 minutos, el servidor recibe llamadas de liberación en los stubs de los objetos que el servidor había devuelto al cliente. Esto parece ser una limpieza automática que, supongo, inicia la capa LRPC.

¿Está esto documentado en cualquier lugar y se puede configurar el tiempo de espera?

Nota: modelo de apartamento multiproceso utilizado en todo.

Respuesta

6

Este http://www.microsoft.com/msj/0398/dcom.aspx bajo recolección de elementos DCOM parece indicar que DCOM utiliza un segundo tiempo de espera de 120 que debe ser perdido tres veces, por lo que alrededor de 6 minutos el cliente se considerará desconectado. Desafortunadamente, también indica que no es configurable por el usuario y no puedo encontrar nada que indique lo contrario.

+0

Ese enlace resultó ser realmente útil, muchas gracias. – morechilli

Cuestiones relacionadas