2010-02-24 14 views
5

In una semplice installazione di Windows abbiamo un singleton COM che funziona come un server fuori processo.Che cosa determina quanto tempo impiega un server COM fuori processo per notare che un client è morto?

I client si connettono chiamando cocreate e ognuno riceve un'interfaccia alla stessa istanza del server.

Se i client si arrestano normalmente rilasciano i loro riferimenti.

Il server ha un po 'di logica che lo mantiene attivo per un breve periodo dopo l'ultima versione per consentire nuove connessioni.

Sono interessato a un caso speciale: il server è in esecuzione con un solo client che si blocca (considerare che si tratta di un arresto anomalo casuale casuale) e il client esce senza aver rilasciato i suoi riferimenti.

Osservo che dopo un periodo indefinito di tempo dicono 8 minuti che il server riceve chiamate di rilascio sugli stub di qualsiasi oggetto che il server ha restituito le interfacce al client. Sembra che si tratti di una pulizia automatica che presumo sia avviata dal livello LRPC.

È documentato ovunque ed è possibile il timeout?

Nota: modello di appartamento multithread utilizzato in tutto.

risposta

6

Questo http://www.microsoft.com/msj/0398/dcom.aspx sotto DCOM Garbage Collection sembra indicare che DCOM utilizza un secondo timeout 120 che ha bisogno di perdere tre volte, quindi circa 6 minuti il ​​cliente sarà considerato disconnesso. Sfortunatamente indica anche che non è configurabile dall'utente e non riesco a trovare nulla di contrario.

+0

Questo collegamento si è rivelato davvero utile, grazie molto apprezzato. – morechilli

Problemi correlati