Правильна ли идея алгоритма и как ее правильно реализовать? - C#

Узнай цену своей работы

Формулировка задачи:

Правильна ли идея алгоритма и как ее правильно реализовать, чтобы программа не зависала и мониторинг работал в своем отдельном потоке и не влиял на программу, но передавал ей результаты. (программа считывает из инфо класса) Есть информационный класс Сервер собирающий содержащий информацию о доступности сервера по ping, http и BD В зависимости от количества серверов (например два) одновременно запускаются потоки для опроса каждого сервера действующие по следующему алгоритму 1. Проверяем доступность по ping, если доступен запускаем 2, если нет, в инфо класс пишем соответствующую инфу, выходим. 2. Если по ping доступен запускаем сразу не зависимо друг от друга асинхронно методы проверки по http и BD. Если по http не доступен делаем 3 попытки, чтобы убедиться что действительно не доступен записываем результаты в инфо класс. 3. Ждем завершения потоков, смотрим инфо класс и состояния серверов, обрабатываем данные, после чего запускаем опять опрос и так бесконечно.

Решение задачи: «Правильна ли идея алгоритма и как ее правильно реализовать?»

textual
Листинг программы
            Thread test1 = new Thread(S1);
            Thread test2 = new Thread(S2);
            test1.Start(); 
            test2.Start();
.......
static void test_monitoring(Server server)
        {
            throw new NotImplementedException();
        }
 
 
 
        static void S1()
        {
            TestMonitoring test = new TestMonitoring();
            Server server = new Server();
            server.IP = "10.xx.24.xxx";
            server.URL = "http://" + "10.xx.24.xxx" + "/cgi/status.txt";
            test.onMonitoringServer += new TestMonitoring.TestMonitoring(test_monitoring);
            test.PingAndRun(server);
        }
 
        static void S2()
        {
            TestMonitoring test2 = new TestMonitoring();
            Server server2 = new Server();
            server2.IP = "10.xx.100.xxx";
            server2.URL = "http://" + "10.xx.100.xxx" + "/cgi/status.txt";
            test2.onMonitoringServer += new TestMonitoring.TestMonitoring(test_monitoring);
            test2.PingAndRun(server2);
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.231 из 5
Похожие ответы