static async Task Main() { Console.Title = "Сервер"; Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.AboveNormal; Thread.CurrentThread.Priority = ThreadPriority.BelowNormal; RpcInitializer.Initialize(_memoryManager); using (var listener = new VRpcListener(IPAddress.Any, Port)) { listener.ConfigureService(ioc => { ioc.AddLogging(loggingBuilder => { loggingBuilder .AddConsole() .AddDebug(); }); ioc.AddSingleton(new Program()); }); Console.CancelKeyPress += (_, e) => { e.Cancel = true; lock (_conLock) { Console.WriteLine("Stopping..."); } listener.BeginShutdown(TimeSpan.FromSeconds(3), "Пользователь нажал Ctrl+C"); }; listener.ClientConnected += Listener_ClientConnected; listener.ClientDisconnected += Listener_ClientDisconnected; //var lt = listener.ServiceProvider.GetRequiredService<IHostApplicationLifetime>(); await listener.RunAsync(); //listener.Start(); //Console.Clear(); //long prev = 0; //var sw = Stopwatch.StartNew(); //while (!listener.Completion.IsCompleted) //{ // Thread.Sleep(1000); // long elapsedMs = sw.ElapsedMilliseconds; // long rCount = Interlocked.Read(ref ReqCount); // ulong reqPerSecond = unchecked((ulong)(rCount - prev)); // prev = rCount; // sw.Restart(); // var reqPerSec = (int)Math.Round(reqPerSecond * 1000d / elapsedMs); // ToConsole(Interlocked.Read(ref _connections), reqPerSec, ReqCount); //} //ToConsole(0, 0, 0); } }