public void RequestLoop() { Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; while (Running) { try { while (Saving || Game1.isTimePaused) { Thread.Yield(); } CrowdRequest req = null; lock (Requests) { if (Requests.Count == 0) { continue; } req = Requests.Dequeue(); } string code = req.GetReqCode(); try { CrowdResponse res = Delegate[code](this, req); if (res == null) { new CrowdResponse(req.GetReqID(), CrowdResponse.Status.STATUS_FAILURE, $"Request error for '{code}'").Send(Socket); } res.Send(Socket); } catch (KeyNotFoundException) { new CrowdResponse(req.GetReqID(), CrowdResponse.Status.STATUS_FAILURE, $"Request error for '{code}'").Send(Socket); } } catch (Exception) { UI.ShowError("Disconnected from Crowd Control"); Socket.Close(); } } }