Jak sprawić, by nazwany potok nie był zajęty po rozłączeniu klienta?

Używam potoku nazwanego i chcę ponownie użyć tego samego potoku na serwerze, aby umożliwić połączenie innego klienta po odłączeniu oryginalnego klienta. To co robię to:

serwer tworzy potok używającCreateNamedPipeserwer zapisuje dane za pomocąWriteFilei ponawia próby, tak długo jak błądERROR_PIPE_LISTENING jest zwracany (czyli przed podłączeniem dowolnego klienta)klienci łączą się za pomocąCreateFileklient odczytuje daneklamka zamykająca klienta za pomocąCloseHandlew tym momencie serwer otrzymuje błądERROR_NO_DATA kiedy próbuje zapisać więcej danychserwer rozłącza rurę za pomocąDisconnectNamedPipe, który miał nadzieję, że znów będzie wolnyserwer próbuje zapisać dane, dostaje błądERROR_PIPE_NOT_CONNECTED, ponawia próbę, dopóki nie wystąpi błądjednak, gdy nowy klient łączy się i próbujeCreateFile na rurzeERROR_PIPE_BUSY

Dlatego moje pytanie brzmi: jakie inne kroki muszę wykonać, aby poprawnie odłączyć klienta od potoku, aby nowy klient mógł się połączyć?

questionAnswers(2)

yourAnswerToTheQuestion