Ejemplo n.º 1
0
        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);
        }