Это очень «огромный» вопрос. Я могу сказать, что мы используем O / R Mapper, и для каждого «запроса» к базе данных необходим объект с именем PersistenceBroker. Этот класс отвечает за все вещи БД, связанные с подключением, аутентификацией и т. Д.
Мы написали PersistenceBrokerFactory.GetCurrentBroker (), который возвращает «работающего» брокера. Если база данных внезапно выходит из строя (по какой-либо причине), объект CONN будет «timeout ()» через 30 секунд (или что вы определите). Если это произойдет, мы покажем пользователю, что он / она не в сети, и отобразим кнопку повторного подключения.
С другой стороны, для визуальной индикации того, что у пользователя есть подключение, у нас есть поток, работающий в фоновом режиме, который проверяет подключение к Интернету каждые 15 секунд. Мы делаем 1 пинг на google.com. ;) Если это не удается, мы предполагаем, что Интернет как-то не работает, и мы обновляем строку состояния.
Я мог бы показать вам весь этот код для монитора работоспособности сети, если хотите. Я взял некоторые биты из Google и другие, которые я сделал сам:)