Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
 private void RaiseException(ThreadServer server, Exception e)
 {
     this.OnException?.Invoke(server, e);
 }
Esempio n. 3
0
        public static void FinishServerStream(IAsyncResult resobj)
        {
            ThreadServer server = (ThreadServer)resobj.AsyncState;

            server.CloseServer();
        }