private void downloader_DownloadProgress(DownloadOperation downloadOperation)
        {
            var appDownloadItem = CurrentDownloads.SingleOrDefault(item =>
                                                                   (item.Tag as DownloadOperation).Guid == downloadOperation.Guid);

            if (appDownloadItem == null)
            {
                return;
            }
            appDownloadItem.BytesReceived = downloadOperation.Progress.BytesReceived;
            appDownloadItem.SetStatus(downloadOperation.Progress.Status);

            // When this event handler is occured for first time (for a specefic DownloadOperation),
            // appDownloadItem.TotalBytesToReceive is zero
            if (appDownloadItem.TotalBytesToReceive == 0)
            {
                appDownloadItem.TotalBytesToReceive = downloadOperation.Progress.TotalBytesToReceive;
            }

            // OS might not report a download completion event, we should check this.
            if ((downloadOperation.Progress.BytesReceived == downloadOperation.Progress.TotalBytesToReceive) &&
                (downloadOperation.Progress.BytesReceived > 0))
            {
                appDownloadItem.SetStatus(BackgroundTransferStatus.Completed);
            }

            if (appDownloadItem.GetStatus() == BackgroundTransferStatus.Completed)
            {
                appDownloadItem.EndDate = DateTime.Now;
                CurrentDownloads.Remove(appDownloadItem);
                CompletedDownloads.Add(appDownloadItem);
                var task = SaveDownloadsHistoryToFileAsync();
                if (this.DownloadCompleted != null)
                {
                    DownloadCompleted(appDownloadItem);
                }
            }

            if (this.DownloadProgress != null)
            {
                DownloadProgress(appDownloadItem);
            }
        }
 public AppDownloadItem FindAppInCurrentDownloads(Guid appGuid)
 {
     return(CurrentDownloads.SingleOrDefault(appDownloadItem => appDownloadItem.AppGuid == appGuid));
 }