private Task <NativeMethods.IDownloadResult> DownloadUpdateAsync(NativeMethods.IUpdateSession3 updateSession, NativeMethods.IUpdate update) { NativeMethods.IUpdateDownloader updateDownloader = updateSession.CreateUpdateDownloader(); updateDownloader.Updates = (NativeMethods.IUpdateCollection) new NativeMethods.UpdateCollection(); updateDownloader.Updates.Add(update); TaskCompletionSource <NativeMethods.IDownloadResult> tcs = new TaskCompletionSource <NativeMethods.IDownloadResult>(); var job = updateDownloader.BeginDownload( new DownloadProgressCallback(), new DownloadCompletedCallback(updateDownloader, tcs), null); return(tcs.Task); }
public DownloadCompletedCallback(NativeMethods.IUpdateDownloader updateDownloader, TaskCompletionSource <NativeMethods.IDownloadResult> tcs) { this.tcs = tcs; this.updateDownloader = updateDownloader; }