public void Start() { try { Task t = ConsoleSampleServer(); t.Wait(); Console.WriteLine("Server started. Press any key to exit..."); } catch (Exception ex) { Utils.Trace("ServiceResultException:" + ex.Message); Console.WriteLine("Exception: {0}", ex.Message); } try { Console.ReadKey(true); } catch { // wait forever if there is no console Thread.Sleep(Timeout.Infinite); } if (server != null) { Console.WriteLine("Server stopped. Waiting for exit..."); server.Stop(); server.Dispose(); server = null; status.Wait(); } }
public void Run() { try { exitCode = ExitCode.ErrorServerNotStarted; ConsoleSampleServer().Wait(); Console.WriteLine("Server started. Press Ctrl-C to exit..."); exitCode = ExitCode.ErrorServerRunning; } catch (Exception ex) { Utils.Trace("ServiceResultException:" + ex.Message); Console.WriteLine("Exception: {0}", ex.Message); exitCode = ExitCode.ErrorServerException; return; } ManualResetEvent quitEvent = new ManualResetEvent(false); try { Console.CancelKeyPress += (sender, eArgs) => { quitEvent.Set(); eArgs.Cancel = true; }; } catch { } // wait for timeout or Ctrl-C quitEvent.WaitOne(); if (server != null) { Console.WriteLine("Server stopped. Waiting for exit..."); using (ReferenceServer _server = server) { // Stop status thread server = null; status.Wait(); // Stop server and dispose _server.Stop(); } } exitCode = ExitCode.Ok; }
public async Task Run() { try { ExitCode = ExitCode.ErrorServerNotStarted; await StartConsoleReferenceServerAsync().ConfigureAwait(false); Console.WriteLine("Server started. Press Ctrl-C to exit..."); ExitCode = ExitCode.ErrorServerRunning; } catch (Exception ex) { Console.WriteLine("Exception: {0}", ex.Message); ExitCode = ExitCode.ErrorServerException; return; } var quitEvent = new ManualResetEvent(false); try { Console.CancelKeyPress += (sender, eArgs) => { quitEvent.Set(); eArgs.Cancel = true; }; } catch { } // wait for timeout or Ctrl-C quitEvent.WaitOne(); if (m_server != null) { Console.WriteLine("Server stopped. Waiting for exit..."); using (ReferenceServer server = m_server) { // Stop status thread m_server = null; m_status.Wait(); // Stop server and dispose server.Stop(); } } ExitCode = ExitCode.Ok; }