FileDownloader refactor

This commit is contained in:
Jaex 2019-05-08 13:38:12 +03:00
parent eac10c7a65
commit 76ebaec0d9
2 changed files with 18 additions and 26 deletions

View File

@ -38,6 +38,7 @@ namespace ShareX.HelpersLib
public string DownloadLocation { get; private set; } public string DownloadLocation { get; private set; }
public bool IsDownloading { get; private set; } public bool IsDownloading { get; private set; }
public bool IsCanceled { get; private set; } public bool IsCanceled { get; private set; }
public bool IsPaused { get; private set; }
public long FileSize { get; private set; } public long FileSize { get; private set; }
public long DownloadedSize { get; private set; } public long DownloadedSize { get; private set; }
public double DownloadSpeed { get; private set; } public double DownloadSpeed { get; private set; }
@ -55,12 +56,11 @@ namespace ShareX.HelpersLib
} }
} }
public Exception LastException { get; private set; }
public bool IsPaused { get; private set; }
public IWebProxy Proxy { get; set; } public IWebProxy Proxy { get; set; }
public string AcceptHeader { get; set; } public string AcceptHeader { get; set; }
public Exception LastException { get; private set; }
public event EventHandler FileSizeReceived, DownloadStarted, ProgressChanged, DownloadCompleted, ExceptionThrowed; public event EventHandler FileSizeReceived, DownloadStarted, ProgressChanged, DownloadCompleted, ExceptionThrown;
private BackgroundWorker worker; private BackgroundWorker worker;
private const int bufferSize = 32768; private const int bufferSize = 32768;
@ -74,7 +74,6 @@ namespace ShareX.HelpersLib
worker = new BackgroundWorker(); worker = new BackgroundWorker();
worker.WorkerReportsProgress = true; worker.WorkerReportsProgress = true;
worker.WorkerSupportsCancellation = true;
worker.DoWork += worker_DoWork; worker.DoWork += worker_DoWork;
worker.ProgressChanged += worker_ProgressChanged; worker.ProgressChanged += worker_ProgressChanged;
worker.RunWorkerCompleted += worker_RunWorkerCompleted; worker.RunWorkerCompleted += worker_RunWorkerCompleted;
@ -85,33 +84,26 @@ namespace ShareX.HelpersLib
if (!IsDownloading && !string.IsNullOrEmpty(URL) && !worker.IsBusy) if (!IsDownloading && !string.IsNullOrEmpty(URL) && !worker.IsBusy)
{ {
IsDownloading = true; IsDownloading = true;
IsCanceled = false;
IsPaused = false; IsPaused = false;
worker.RunWorkerAsync(); worker.RunWorkerAsync();
} }
} }
public void ResumeDownload()
{
if (IsDownloading)
{
IsPaused = false;
}
}
public void PauseDownload()
{
if (IsDownloading)
{
IsPaused = true;
}
}
public void StopDownload() public void StopDownload()
{ {
if (IsDownloading) IsCanceled = true;
{ }
IsCanceled = true;
} public void PauseDownload()
{
IsPaused = true;
}
public void ResumeDownload()
{
IsPaused = false;
} }
private void ThrowEvent(EventHandler eventHandler) private void ThrowEvent(EventHandler eventHandler)
@ -207,7 +199,7 @@ namespace ShareX.HelpersLib
{ {
LastException = ex; LastException = ex;
ThrowEvent(ExceptionThrowed); ThrowEvent(ExceptionThrown);
} }
} }
finally finally

View File

@ -223,7 +223,7 @@ namespace ShareX.HelpersLib
fileDownloader.DownloadStarted += (v1, v2) => ChangeStatus(Resources.DownloaderForm_StartDownload_Downloading_); fileDownloader.DownloadStarted += (v1, v2) => ChangeStatus(Resources.DownloaderForm_StartDownload_Downloading_);
fileDownloader.ProgressChanged += (v1, v2) => ChangeProgress(); fileDownloader.ProgressChanged += (v1, v2) => ChangeProgress();
fileDownloader.DownloadCompleted += fileDownloader_DownloadCompleted; fileDownloader.DownloadCompleted += fileDownloader_DownloadCompleted;
fileDownloader.ExceptionThrowed += (v1, v2) => ChangeStatus(fileDownloader.LastException.Message); fileDownloader.ExceptionThrown += (v1, v2) => ChangeStatus(fileDownloader.LastException.Message);
fileDownloader.StartDownload(); fileDownloader.StartDownload();
ChangeStatus(Resources.DownloaderForm_StartDownload_Getting_file_size_); ChangeStatus(Resources.DownloaderForm_StartDownload_Getting_file_size_);