private (ThreadServer, Thread) CreateThread() { using (ManualResetEventSlim resetEvent = new ManualResetEventSlim()) { ThreadServer server = null; Thread thread = new Thread( async() => { NamedPipeServerStream pipe = new NamedPipeServerStream( Constants.PipeNamePrefix, PipeDirection.InOut, 1, PipeTransmissionMode.Message, PipeOptions.WriteThrough); await pipe.WaitForConnectionAsync(); server = new ThreadServer(pipe); resetEvent.Set(); await server.Run(this); this.CreateThread(); }); thread.Start(); resetEvent.Wait(); return(server, thread); } }
private void RaiseException(ThreadServer server, Exception e) { this.OnException?.Invoke(server, e); }
public static void FinishServerStream(IAsyncResult resobj) { ThreadServer server = (ThreadServer)resobj.AsyncState; server.CloseServer(); }