With the implementation of persistent as in #1, a NamedPipeServerStream was introduced. This runs on a background thread. The background thread is not cleanly exited - the finally is never called, neither directly nor using statement.
This is largely a non-issue in normal operation: Windows should automatically dispose of the handle when the process ends, and the server program should not be exited until shutdown anyway.
Still would be nice to fix. Perhaps a Thread.Interrupt will do to kick it out of the WaitForConnection()?