示例#1
0
        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);
        }
示例#2
0
 public DownloadCompletedCallback(NativeMethods.IUpdateDownloader updateDownloader, TaskCompletionSource <NativeMethods.IDownloadResult> tcs)
 {
     this.tcs = tcs;
     this.updateDownloader = updateDownloader;
 }