So che non sono il primo a porre la domanda: come faccio a sapere se la mia domanda è online o no? Ho trovato questo post: StackOverflow. Voglio farlo con C# e .NET 3.5.Determinare se la connessione Internet è disponibile
Si consiglia di eseguire il ping della risorsa regolarmente. Non sono molto contento di questo consiglio. Preferirei rilevare un cambio di rete e POI eseguire il ping del mio servizio per verificare se è online.
.NET fornisce due eventi per questo scopo: NetworkChange.NetworkAvailabilityChanged NetworkChange.NetworkAddressChanged
Il primo evento suona bene, ma è attivato solo se l'ultima scheda di rete che è in linea va offline. Ho diverse schede di rete virtuali che sono state installate da VMWare e quelle sono sempre online. Il secondo evento funziona, ma tra collegare il cavo di rete e l'evento, ci sono spesso 5 secondi di attesa. L'icona della barra delle applicazioni di Windows reagisce più o meno immediatamente quando sto scollegando il cavo. Qual è il modo migliore per essere veloce come questa icona del vassoio?
mia soluzione sarebbe quello di interrogare NetworkInterface.GetAllNetworkInterfaces() ogni 500ms e di gettare il mio proprio evento nel caso in cui lo stato di una scheda di rete è cambiato.
Ci deve essere una soluzione migliore :)
Come pensate di rilevare tutte le modifiche rilevanti della rete? Non c'è davvero alcun modo per la tua applicazione di notare se qualche collegamento vitale è perso lungo la strada. –
Vedere la mia modifica per alcune nuove informazioni relative a Iphlpapi.dll e NotifyAddrChange – Webleeuw
Online in che senso? Con un server? Se sei online con un server, perché non inviare semplicemente un messaggio di stato ogni 5 secondi per determinare se sei online o no? –