private async void downloadAndDisplayAllReleaseNotes(AppCastItem[] items, AppCastItem latestVersion, string initialHTML) { _sparkle.LogWriter.PrintMessage("Preparing to initialize release notes..."); StringBuilder sb = new StringBuilder(initialHTML); foreach (AppCastItem castItem in items) { _sparkle.LogWriter.PrintMessage("Initializing release notes for {0}", castItem.Version); // TODO: could we optimize this by doing multiple downloads at once? var releaseNotes = await GetReleaseNotes(castItem); sb.Append(string.Format(_separatorTemplate, castItem.Version, castItem.PublicationDate.ToString("D"), // was dd MMM yyyy releaseNotes, latestVersion.Version.Equals(castItem.Version) ? "#ABFF82" : "#AFD7FF")); } sb.Append("</body>"); string fullHTML = sb.ToString(); ReleaseNotesBrowser.Invoke((MethodInvoker) delegate { // see https://stackoverflow.com/a/15209861/3938401 ReleaseNotesBrowser.Navigate("about:blank"); ReleaseNotesBrowser.Document.OpenNew(true); ReleaseNotesBrowser.Document.Write(fullHTML); ReleaseNotesBrowser.DocumentText = fullHTML; }); _sparkle.LogWriter.PrintMessage("Done initializing release notes!"); }
private async void LoadReleaseNotes(List <AppCastItem> items, bool isforallversions) { AppCastItem latestVersion = items.OrderByDescending(p => p.Version).FirstOrDefault(); string releaseNotes = null; if (!isforallversions) { releaseNotes = await _releaseNotesGrabber.DownloadAllReleaseNotes(items, latestVersion, _cancellationToken); } else { releaseNotes = await _releaseNotesGrabber.DownloadAllReleaseNotesWithButtons(items, latestVersion, _cancellationToken); } ReleaseNotesBrowser.Invoke((MethodInvoker) delegate { // see https://stackoverflow.com/a/15209861/3938401 ReleaseNotesBrowser.ObjectForScripting = this; ReleaseNotesBrowser.Navigate("about:blank"); ReleaseNotesBrowser.Document.OpenNew(true); ReleaseNotesBrowser.Document.Write(releaseNotes); ReleaseNotesBrowser.DocumentText = releaseNotes; }); }