Правильна ли идея алгоритма и как ее правильно реализовать? - 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);
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д