The connection to the worker process was sync on the UI thread which
could lead to hangs. Made it an async operation instead.
This did require me to upgrade to the 4.6 framework to use the
NamedPipeClientStream::ConnectAsync method. If that is a blocker I can
downgrade back to 4.5.2 and use Thread tricks to get a similar effect.
Added markers to the IPC stream so the client knows when to stop
reading. The previous behavior was to just read until the pipe was
empty and swallow the exception.