void StartDaemon(Carbonate.Server.Server server) { while (Connected) { Thread.Sleep(1); if (DateTime.Now > keepalive) { server.Disconnect(Username); Disconnect(); ScreenIO.Info($"User \"{Username}\" was kicked from the server due to keep-alive."); break; } try { lock (stream) { if (!stream.DataAvailable) { continue; } Packet packet = Packet.ReceivePacket(stream, receiveBuffer); server.ProcessUserPacket(this, packet); } } catch (Exception ex) { ScreenIO.Error($"Error occured in user daemon thread of \"{Username}\": {ex.Message}"); } } }
/// <summary> /// Begin daemon thread. /// </summary> /// <param name="server">Server object</param> public void BeginDaemon(Carbonate.Server.Server server) { daemonThread = new Thread(() => { StartDaemon(server); }); daemonThread.IsBackground = true; daemonThread.Start(); }