private void CheckNextFile() { try { _currentServerFile++; if (_currentServerFile == _serverFiles.Count()) { OpenVPMobile(); return; } if (_serverFiles != null || _serverFiles.Count() > 0) { UpdateFileInfo f = _serverFiles[_currentServerFile]; CurrentFile = "Checking file: " + Path.GetFileName(f.FileName); string filePath = Path.Combine(CurrentMobileDirectory, f.RelativeFilePath); if (!Directory.Exists(Path.GetDirectoryName(filePath))) { Directory.CreateDirectory(Path.GetDirectoryName(filePath)); } if (!File.Exists(filePath) || File.GetLastWriteTimeUtc(filePath).CompareTo(f.FileDate) < 0) { Logging.LogMessage(Logging.LogType.Info, f.FileName + " - Local: " + File.GetLastWriteTimeUtc(filePath).ToString("MM/dd hh:mm:ss.ffff") + " || Server: " + f.FileDate.ToString("MM/dd hh:mm:ss.ffff")); CurrentFile = "Updating file: " + Path.GetFileName(f.FileName); MobileService.GetMainUpdateFileAsync(f.RelativeFilePath, filePath); } else { CheckNextFile(); } } } catch (Exception ex) { var message = "Error checking file"; Logging.LogMessage(Logging.LogType.Error, message, ex); } }
private void GetUpdateFile_Completed(object sender, GetMainUpdateFileCompletedEventArgs e) { try { if (e.Error != null) { if (e.Error.InnerException is WebException && ((WebException)e.Error.InnerException).Status == WebExceptionStatus.RequestCanceled) { Thread sep = new Thread((ThreadStart)(() => { try { Uri folder = new Uri(CurrentMobileDirectory); string s = Uri.UnescapeDataString(folder.MakeRelativeUri(new Uri(e.UserState.ToString())).ToString().Replace('/', Path.DirectorySeparatorChar)); MobileService.GetMainUpdateFileAsync(s, e.UserState); } catch (Exception ex2) { var message = "Error pulling file from server"; Logging.LogMessage(Logging.LogType.Error, message, ex2); } })); sep.Start(); } else if (e.Error is CommunicationException && e.Error.Message.Equals("The underlying connection was closed: A connection that was expected to be kept alive was closed by the server.")) { OnNetworkDisconnect(e.Error); } else if (e.Error is EndpointNotFoundException) { OnNetworkDisconnect(e.Error); } else { if (!_closing) { MessageBox.Show("Error updating file - " + e.UserState.ToString() + ": " + e.Error.ToString()); } } } else { if (e.Result != null) { File.WriteAllBytes(e.UserState.ToString(), e.Result); } CurrentFile = "Updated file: " + Path.GetFileName(e.UserState.ToString()); } CheckNextFile(); } catch (EndpointNotFoundException ex) { OnNetworkDisconnect(ex); } catch (Exception ex) { var message = "Error updating file"; Logging.LogMessage(Logging.LogType.Error, message, ex); if (!_closing) { MessageBox.Show(ex.ToString()); OpenVPMobile(); } } }