Я знаю, что я не первый, кто задал вопрос: как узнать, подключено ли мое приложение или нет? Я нашел этот пост: qaru.site/info/423666/.... Я хочу сделать это с помощью С# и .NET 3.5.
Рекомендация - регулярно проверять ресурсы. Я не очень доволен этим советом. Я бы скорее обнаружил изменение сети, а THEN выполнил мой сервис, чтобы проверить, находится ли он в сети.
.NET предоставляет для этой цели два события: NetworkChange.NetworkAvailabilityChanged NetworkChange.NetworkAddressChanged
Первое событие звучит неплохо, но оно запускается только в том случае, если последняя сетевая карта, находящаяся в сети, отключена. У меня есть несколько виртуальных сетевых карт, которые были установлены VMWare, и они всегда в сети. Второе событие работает, но между подключением сетевого кабеля и событием часто бывает 5 секунд ожидания. Значок панели Windows реагирует более или менее немедленно, когда я отсоединяю кабель. Каков наилучший способ быть таким же быстрым, как этот значок в трее?
Моим обходным решением будет опрос NetworkInterface.GetAllNetworkInterfaces() каждые 500 мс и передать свое собственное событие в случае изменения статуса сетевого адаптера.
Должно быть лучшее решение:)