Mam projekt, w którym trafiam kilka niestandardowych liczników wydajności systemu Windows na wielu serwerach i gromadzę je w bazie danych. Jeśli serwer jest wyłączony, chcę go pominąć i kontynuować pracę z moim dniem.Szybki sposób na sprawdzenie, czy serwer jest dostępny przez sieć w C#
Obecnie sprawdzam, czy serwer jest aktywny, wykonując numer DirectoryInfo
w udziale, który i tak powinienem sprawdzić później, a następnie sprawdzając właściwość .Exists
. To jest mój obecny fragment kodu dla testowanie:
DirectoryInfo di = new DirectoryInfo(machine.Share_Path);
if (!di.Exists)
{
log.Warn("Could not access " + machine.Name + "! Maybe its down?");
continue; // Skips to the next server in my loop where this snippet exists.
}
To działa, ale jest dość powolne. Średnio trwa to ok. 68 sekund dla di.Exists bit do zakończenia swojej pracy, i najlepiej powinien wiedzieć w ciągu sekundy, czy serwer jest dostępny. Pingowanie również nie jest opcją, ponieważ serwer można pingować, ale nie "żyć" w naszym środowisku.
Wciąż jestem świeży dla świata .NET, więc jestem otwarty na wszelkie rady, które mogą zaoferować ludzie.
Z góry dziękuję.
-Weegee
Czy trwa 68 sekund, gdy serwer jest dostępny, gdy serwer nie jest dostępny, lub jedno i drugie? –
Gdy nie ma serwera. Kiedy serwer jest dostępny, zajmuje to mniej niż sekundę. – Weegee
Co zrobić z uruchomieniem sprawdzenia w osobnym wątku roboczym i po prostu pozwolić, aby trwało to tyle czasu, ile potrzeba? – Dolphin