public void UpdateProgress()
        {
            AssociatedDownload.CalculateDownloadSpeed();

            CurrentNumberOfBytes = $"{AssociatedDownload.DownloadedSize / 1000} KB";
            NumberOfBytesInTotal = $"{AssociatedDownload.FileSize / 1000} KB";
            DownloadedPercentage = $"{AssociatedDownload.ProgressPercentage} %";
            Speed = $"{AssociatedDownload.DownloadSpeed} KB\\s";
            switch (AssociatedDownload.DownloadState)
            {
            case Interfaces.DownloadStates.PreStart:
                State = "Started";
                break;

            case Interfaces.DownloadStates.InProgress:
                State = "Downloading";
                break;

            case Interfaces.DownloadStates.Paused:
                State = "Paused";
                break;

            case Interfaces.DownloadStates.Finished:
                State = "Complete!";
                break;

            case Interfaces.DownloadStates.Canceled:
                State = "Canceled";
                break;

            default:
                break;
            }
            Task.Run(() => AssociatedView.Dispatcher.Invoke(() => AssociatedView.Items.Refresh()));
        }
 public void RestartDownload()
 {
     Task.Run(() =>
     {
         AssociatedDownload.Restart();
     });
 }
 public void PauseDownload()
 {
     Task.Run(() =>
     {
         AssociatedDownload.Pause();
     });
 }
 public void ResumeDownload()
 {
     Task.Run(() =>
     {
         AssociatedDownload.Resume();
     });
 }
        public void CancelDownload()
        {
            Task.Run(() =>
            {
                AssociatedDownload.Cancel();

                FileInfo fileInfo = new FileInfo(AssociatedDownload.DownloadTo);
                while (IsFileLocked(fileInfo))
                {
                    Task.Delay(1000);
                }
                if (Directory.Exists(AssociatedDownload.DownloadAt))
                {
                    Directory.Delete(AssociatedDownload.DownloadAt, true);
                }
            });
        }