diff --git a/ILSpy/AboutPage.cs b/ILSpy/AboutPage.cs index edf4d8a1d..d751d3664 100644 --- a/ILSpy/AboutPage.cs +++ b/ILSpy/AboutPage.cs @@ -179,30 +179,32 @@ namespace ICSharpCode.ILSpy static Task GetLatestVersionAsync() { var tcs = new TaskCompletionSource(); - WebClient wc = new WebClient(); - IWebProxy systemWebProxy = WebRequest.GetSystemWebProxy(); - systemWebProxy.Credentials = CredentialCache.DefaultCredentials; - wc.Proxy = systemWebProxy; - wc.DownloadDataCompleted += delegate(object sender, DownloadDataCompletedEventArgs e) { - if (e.Error != null) { - tcs.SetException(e.Error); - } else { - try { - XDocument doc = XDocument.Load(new MemoryStream(e.Result)); - var bands = doc.Root.Elements("band"); - var currentBand = bands.FirstOrDefault(b => (string)b.Attribute("id") == band) ?? bands.First(); - Version version = new Version((string)currentBand.Element("latestVersion")); - string url = (string)currentBand.Element("downloadUrl"); - if (!(url.StartsWith("http://", StringComparison.Ordinal) || url.StartsWith("https://", StringComparison.Ordinal))) - url = null; // don't accept non-urls - latestAvailableVersion = new AvailableVersionInfo { Version = version, DownloadUrl = url }; - tcs.SetResult(latestAvailableVersion); - } catch (Exception ex) { - tcs.SetException(ex); + new Action(() => { + WebClient wc = new WebClient(); + IWebProxy systemWebProxy = WebRequest.GetSystemWebProxy(); + systemWebProxy.Credentials = CredentialCache.DefaultCredentials; + wc.Proxy = systemWebProxy; + wc.DownloadDataCompleted += delegate(object sender, DownloadDataCompletedEventArgs e) { + if (e.Error != null) { + tcs.SetException(e.Error); + } else { + try { + XDocument doc = XDocument.Load(new MemoryStream(e.Result)); + var bands = doc.Root.Elements("band"); + var currentBand = bands.FirstOrDefault(b => (string)b.Attribute("id") == band) ?? bands.First(); + Version version = new Version((string)currentBand.Element("latestVersion")); + string url = (string)currentBand.Element("downloadUrl"); + if (!(url.StartsWith("http://", StringComparison.Ordinal) || url.StartsWith("https://", StringComparison.Ordinal))) + url = null; // don't accept non-urls + latestAvailableVersion = new AvailableVersionInfo { Version = version, DownloadUrl = url }; + tcs.SetResult(latestAvailableVersion); + } catch (Exception ex) { + tcs.SetException(ex); + } } - } - }; - wc.DownloadDataAsync(UpdateUrl); + }; + wc.DownloadDataAsync(UpdateUrl); + }).BeginInvoke(null, null); return tcs.Task; }