private async Task <UpdateController.VersionInfo> GetVersionFromServerAsync()
 {
     UpdateController.VersionInfo versionInfo;
     try
     {
         HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(Settings.Default.VersionCheckUrl);
         httpWebRequest.Timeout = 10000;
         using (HttpWebResponse responseAsync = (HttpWebResponse)await httpWebRequest.GetResponseAsync())
         {
             string end = (new StreamReader(responseAsync.GetResponseStream())).ReadToEnd();
             Settings.Default.LastVersionInfo  = end;
             Settings.Default.LastVersionCheck = DateTime.Today;
             Settings.Default.Save();
             versionInfo = JsonConvert.DeserializeObject <UpdateController.VersionInfo>(end);
         }
     }
     catch
     {
         UpdateController.VersionInfo versionInfo1 = new UpdateController.VersionInfo()
         {
             Version = "1.0.0.0",
             Force   = false,
             Url     = string.Empty
         };
         versionInfo = versionInfo1;
     }
     return(versionInfo);
 }
        public async Task CheckForUpdateAsync()
        {
            UpdateController.VersionInfo versionFromServerAsync;
            Version version;

            if (this.IsUpdateCheckRequired())
            {
                versionFromServerAsync = await this.GetVersionFromServerAsync();
            }
            else
            {
                versionFromServerAsync = this.GetCachedVersion();
            }
            UpdateController.VersionInfo versionInfo = versionFromServerAsync;
            Version.TryParse(versionInfo.Version, out version);
            Version version1 = Assembly.GetExecutingAssembly().GetName().Version;

            this.UpdateFound = version > version1;
            this.ForceUpdate = version.Minor > version1.Minor;
            this.UpdateUrl   = versionInfo.Url;
        }