/// <summary> /// Проверить наличие обновлений на сервере. /// </summary> /// <returns></returns> public Task <bool> CheckUpdateAsync() { return(Task.Factory.StartNew(() => { //Уведомляем подписчиков, что проверка наличия новой версии запущена. OnUpdateStateChanged(UpdateState.Checking); string localPidFile = _localPidFile; string localPidHash = null; if (File.Exists(localPidFile)) //если локальный файл с хэшем версии обновления найден { localPidHash = Pid.FromTextFile(localPidFile).Hash; } WebClient web = _webClientFactory.Create(); string pidText = web.DownloadString(_serverPidFile); Pid downloadedPid = Pid.FromString(pidText); if (localPidHash == null) { Pid newLocalPid = Pid.FromVersionNumber(-1); localPidHash = newLocalPid.Hash; using (StreamWriter writer = File.CreateText(localPidFile)) { writer.Write(newLocalPid.ToString()); } } OnUpdateStateChanged(UpdateState.None); if (downloadedPid.Hash != localPidHash) { _pidFromServer = downloadedPid; return true; } //Уведомляем подписчиков, что обновление не требуется. OnUpdateStateChanged(UpdateState.NotNeeded); OnUpdateStateChanged(UpdateState.None); return false; })); }