static bool ConsoleCtrlCheck(CtrlTypes ctrlType) { switch (ctrlType) { case CtrlTypes.CTRL_CLOSE_EVENT: case CtrlTypes.CTRL_LOGOFF_EVENT: case CtrlTypes.CTRL_SHUTDOWN_EVENT: doItAll = false; TasksMgr.PrefClosing(); Thread.Sleep(1500); return(true); case CtrlTypes.CTRL_C_EVENT: Params.SaveUsers(); return(true); default: return(false); } }
static int Main() { handlerRoutine = new HandlerRoutine(ConsoleCtrlCheck); SetConsoleCtrlHandler(handlerRoutine, true); #if DEBUG #else Console.OutputEncoding = Encoding.UTF8; #endif while (doItAll) { try { Debug.Log("Запуск программы"); games = new Dictionary <int, Game>(); TasksMgr.doOtherThreads = true; if (!Params.LoadParams()) { Debug.LogError("Файл настроек не обнаружен - \"params.xml\", создаю новый..."); } if (!Params.LoadUsers()) { Debug.LogError("Файл со списком пользователей не обнаружен - \"users.xml\", создаю новый..."); } if (Params.TelegToken == null || Params.TelegToken.Length < 6) { Debug.LogError("Токен Telegram API не обнаружен, надо ввести его в файле params.xml"); Debug.LogWarning("Завершение работы..."); Console.WriteLine("Press any key to exit..."); Console.ReadKey(); return(-1); } Debug.Log("Нажмите Ctrl + C чтобы сохранить список пользователей"); Debug.Log("Запускаю сервисы Telegram"); Telegram.StartMsgUpd(); TasksMgr.StartLineParsing(); TasksMgr.StartUsersSavingThread(); Thread.Sleep(6 * 3600 * 1000); //ждать 6 часов bool sleepAgain = true; while (sleepAgain) { sleepAgain = false; lock (gamesLocker) { foreach (Game game in games.Values) { //если есть активные алгоритмы sleepAgain |= game.algoritms[0].actived; sleepAgain |= game.algoritms[1].actived; sleepAgain |= game.algoritms[2].actived; sleepAgain |= game.deleteFuncIsActivated; } } if (sleepAgain) { Thread.Sleep(600000); //то подождать ещё 10 мин } } } catch (Exception e) { Debug.LogException(e); } finally { TasksMgr.PrefClosing(); } } return(0); }