2012-10-15 19 views
5

Come posso monitorare le pipe denominate? FileSystemWatcher non può controllare \\\\.\pipes. C'è qualcosa di simile a FSW che può essere usato per le pipe denominate? Attualmente eseguo il polling per qualsiasi nuova creazione di pipe denominata, ma sembra un po 'inefficace.Monitoraggio per pipe denominate in C#

Voglio essere il monitoraggio per la creazione di pipe che mi interessa. L'elenco delle pipe nominate è buono quando la pipe è già stata creata. Avrò diverse istanze del mio programma che spuntano e ogni volta che si apre, voglio essere in grado di connettermi con le pipe denominate automaticamente senza dover eseguire il polling. Non sembra esserci alcun meccanismo disponibile.

risposta

2

Non è possibile guardare per una pipe denominata di per sé, ma è possibile attendere altre operazioni. La mia soluzione è creare un evento e poi aspettarlo. Quando il programma server crea la sua pipa, segnala anche l'evento. Quando il client viene segnalato, chiudi l'evento e apri la pipe.

Quando si ottiene un'indicazione che il tubo è chiuso e occorre guardarlo nuovamente, riaprire l'evento e attendere.

Se si dispone di più pipe, è possibile che si desideri un evento separato per ogni pipe (EventForPipe-*pipename*) o si desideri impostare un evento che viene utilizzato per tutte le pipe e controllare semplicemente ciascuna pipe quando viene segnalato l'evento .

Questo funzionerà per una pipe locale, ma non remota perché non c'è modo di segnalare o attendere un evento remoto. Se devi guardare una pipe su un altro computer, il computer con la pipe può anche avere una directory condivisa che può essere usata per la segnalazione. Poiché è possibile visualizzare una directory condivisa per le modifiche ai file, è possibile creare un file quando viene creata la pipe. Si noti che è ancora necessario eseguire il polling periodicamente (forse una volta al minuto) affinché questa strategia funzioni perché un server remoto potrebbe non essere in grado di onorare tutte le richieste di notifica dei file remoti.

+0

bel approccio +1. – danihp