2012-10-15 11 views
5

Jak mogę monitorować dla nazwanych potoków? FileSystemWatcher nie można monitorować \\\\.\pipes. Czy istnieje coś podobnego do FSW, które może być używane do nazwanych potoków? Obecnie odpytywam o dowolne nowe nazwane tworzenie potoków, ale wydaje się to trochę nieskuteczne.Monitorowanie nazwanych rur w języku C#

Chcę monitorować tworzenie rur, które mnie interesują. Lista nazwanych potoków jest dobra, gdy potok jest już utworzony. Będę miał kilka wystąpień mojego programu i za każdym razem, gdy się pojawi, chcę móc połączyć się z nim za pomocą potoków nazwanych automatycznie bez konieczności odpytywania. Wydaje się, że nie ma takiego mechanizmu.

Odpowiedz

2

Nie możesz oglądać nazwanej rury jako takiej, ale możesz poczekać na inne rzeczy. Moim rozwiązaniem jest stworzenie zdarzenia, a następnie czekanie na to. Gdy program serwera tworzy swoją rurę, sygnalizuje to również zdarzenie. Gdy klient zostanie zasygnalizowany, zamknij zdarzenie i otwórz potok.

Gdy pojawi się wskazówka, że ​​rura została zamknięta i trzeba ją ponownie obejrzeć, otwórz ponownie wydarzenie i poczekaj.

Jeśli masz wiele rur, możesz chcieć mieć osobne wydarzenie dla każdej rury (EventForPipe-*pipename*) lub możesz chcieć mieć jedno zdarzenie, które jest używane dla wszystkich rur i po prostu sprawdzić dla każdej rury, gdy wydarzenie zostanie zasygnalizowane .

Będzie to działać w przypadku potoku lokalnego, ale nie zdalnego, ponieważ nie ma możliwości zasygnalizowania lub oczekiwania na zdarzenie zdalne. Jeśli musisz oglądać potok na innym komputerze, komputer z potokiem może również mieć współużytkowany katalog, który może być używany do sygnalizowania. Ponieważ można oglądać katalog współdzielony w celu zmiany plików, można utworzyć plik po utworzeniu potoku. Pamiętaj, że musisz nadal przeprowadzać ankietę (być może raz na minutę), aby ta strategia działała, ponieważ serwer zdalny może nie być w stanie uszanować wszystkich żądań powiadomienia o plikach zdalnych.

+0

ładne podejście +1. – danihp