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