2010-02-24 1 views
5

Dans une configuration Windows simple, nous avons un singleton COM qui s'exécute comme un serveur hors processus.Qu'est-ce qui détermine combien de temps prend un serveur COM hors processus pour constater qu'un client est mort?

Les clients se connectent en appelant cocreate et chacun reçoit une interface sur la même instance du serveur.

Si les clients s'arrêtent normalement, ils libèrent leurs références.

Le serveur dispose d'un peu de logique qui le maintient actif peu de temps après la dernière version pour permettre de nouvelles connexions.

Je suis intéressé par un cas particulier - le serveur fonctionne avec un seul client qui plante (il s'agit d'un crash inconnu inconnu) et le client quitte sans avoir publié ses références.

Je constate qu'après une période indéterminée, disons 8 minutes, le serveur reçoit des appels de libération sur les bouts de tous les objets que le serveur a renvoyés des interfaces au client. Cela semble être un nettoyage automatique que je suppose être démarré par la couche LRPC.

Est-ce documenté quelque part et le délai d'attente est-il configurable?

Note: Modèle d'appartement multithread utilisé partout.

Répondre

6

Cette http://www.microsoft.com/msj/0398/dcom.aspx sous Garbage Collection DCOM semble indiquer que DCOM utilise un délai d'attente 120 secondes qui doit être manqué trois fois, donc environ 6 minutes, le client sera considéré comme déconnecté. Malheureusement, cela indique également que ce n'est pas configurable par l'utilisateur et que je ne trouve rien de contraire.

+0

Ce lien s'est avéré très utile - merci beaucoup apprécié. – morechilli

Questions connexes