Публичный метод GetWeather() возвращает строку, которая извлекает¬ся с помощью метода _getCachedWeather() либо метода _getWebWeather(). Основываясь на времени последнего изменения файла кэша, метод GetWeather() принимает решение о том, откуда взять данные - с серве¬ра или из кэша.
В платформе .NET имеется широко применяемая структура с именем OateTime. И для получения даты или времени чаще всего обращаются именно к ней. Именно так обстоит дело, если надо получить дату и вре¬мя, имеющие отношение к файлу. Время последнего изменения файла кэша можно получить, написав публичную функцию доступа с име¬нем LastModified:
public OateTime LastModified
if ((File.Exists(_cachedFile))) {
return File.GetLastWriteTime( cachedFile);
)
else
return new DateTime(1,1,1);
Этот фрагмент кода возвращает дату и время последнего изме файла кэша. В первую очередь необходимо убедиться, что файл i ще существует, в противном случае при попытке получить ин(] цию о времени будет возбуждено исключение. Если файл суще то с помощью метода GetLastWriteTimeQ извлекаются дата и вр полнения последней операции записи в файл. Если файл отсу создается новый экземпляр структуры DateTirae, в которую в кач номера года, месяца и числа месяца записывается число 1. Тем < мы гарантируем, что при отсутствии файла кэша приложение ] будет обращаться за информацией о погоде к серверу в Сети.
На основе этой информации метод GetWeather() принимает о том, откуда взять данные о погоде:
DateTirae timeLimit = LastModlfied.AddMinutes(30);.
С помощью метода AddMinutesO к полученному времени обнов файла добавляется 30 минут. Полученное время в виде стру DateTime записывается в переменную timeLimit, значение которой! посредством метода СотрагеТо() сравниваться с текущим временежс
if (DateTime.Now.CompareTo(timeLimit) > -1)
return _getWebweather();
} . else
return _getCachedWeather();
}
Метод CompareTo() возвращает в качестве результата целое число. ] текущее время (DateTime. Now) больше, чем timeLimit, то возврата ложительное число. Если сравниваемые величины равны, метод i ноль. Если текущее время меньше, чем timeLimit, возвращается' меньше -1. Данный фрагмент кода принимает решение о получев вых данных от сервера только в том случае, если с момента вь ния последней операции записи в файл кэша прошло по меньшей! 30 минут, в противном случае данные извлекаются из файла кэша.