/* frmDownload.cs $\r
\r
- This file is part of the HandBrake source code.\r
- Homepage: <http://handbrake.fr>.\r
- It may be used under the terms of the GNU General Public License. */\r
-\r
-using System;\r
-using System.Windows.Forms;\r
-using System.Net;\r
-using System.IO;\r
-using System.Threading;\r
-using System.Diagnostics;\r
+ This file is part of the HandBrake source code.\r
+ Homepage: <http://handbrake.fr>.\r
+ It may be used under the terms of the GNU General Public License. */\r
\r
namespace Handbrake\r
{\r
+ using System;\r
+ using System.Diagnostics;\r
+ using System.IO;\r
+ using System.Net;\r
+ using System.Threading;\r
+ using System.Windows.Forms;\r
+\r
public partial class frmDownload : Form\r
{\r
- private readonly Thread downloadThread;\r
- private Stream responceStream;\r
- private Stream loacalStream;\r
- private HttpWebRequest webRequest;\r
- private HttpWebResponse webResponse;\r
- private static int progress;\r
- private delegate void UpdateProgessCallback(Int64 BytesRead, Int64 TotalBytes);\r
+ private readonly Thread _downloadThread;\r
+ private Stream _responceStream;\r
+ private Stream _loacalStream;\r
+ private HttpWebRequest _webRequest;\r
+ private HttpWebResponse _webResponse;\r
+ private static int _progress;\r
+ private bool _killThread;\r
+\r
+ private delegate void UpdateProgessCallback(long bytesRead, long totalBytes);\r
+\r
private delegate void DownloadCompleteCallback();\r
+\r
private delegate void DownloadFailedCallback();\r
\r
- private string file;\r
\r
public frmDownload(string filename)\r
{\r
InitializeComponent();\r
\r
- file = filename;\r
- downloadThread = new Thread(Download);\r
- downloadThread.Start();\r
+ _downloadThread = new Thread(Download);\r
+ _downloadThread.Start(filename);\r
}\r
\r
- private void Download()\r
+ private void Download(object file)\r
{\r
string tempPath = Path.Combine(Path.GetTempPath(), "handbrake-setup.exe");\r
- string hbUpdate = file;\r
+ string hbUpdate = (string) file;\r
WebClient wcDownload = new WebClient();\r
\r
try\r
if (File.Exists(tempPath))\r
File.Delete(tempPath);\r
\r
- webRequest = (HttpWebRequest)WebRequest.Create(hbUpdate);\r
- webRequest.Credentials = CredentialCache.DefaultCredentials;\r
- webResponse = (HttpWebResponse)webRequest.GetResponse();\r
- Int64 fileSize = webResponse.ContentLength;\r
+ _webRequest = (HttpWebRequest) WebRequest.Create(hbUpdate);\r
+ _webRequest.Credentials = CredentialCache.DefaultCredentials;\r
+ _webResponse = (HttpWebResponse) _webRequest.GetResponse();\r
+ long fileSize = _webResponse.ContentLength;\r
\r
- responceStream = wcDownload.OpenRead(hbUpdate);\r
- loacalStream = new FileStream(tempPath, FileMode.Create, FileAccess.Write, FileShare.None);\r
+ _responceStream = wcDownload.OpenRead(hbUpdate);\r
+ _loacalStream = new FileStream(tempPath, FileMode.Create, FileAccess.Write, FileShare.None);\r
\r
int bytesSize;\r
byte[] downBuffer = new byte[2048];\r
\r
long flength = 0;\r
- while ((bytesSize = responceStream.Read(downBuffer, 0, downBuffer.Length)) > 0)\r
+ while ((bytesSize = _responceStream.Read(downBuffer, 0, downBuffer.Length)) > 0)\r
{\r
- loacalStream.Write(downBuffer, 0, bytesSize);\r
- flength = loacalStream.Length;\r
- Invoke(new UpdateProgessCallback(this.UpdateProgress), new object[] { loacalStream.Length, fileSize });\r
+ if (_killThread)\r
+ return;\r
+ _loacalStream.Write(downBuffer, 0, bytesSize);\r
+ flength = _loacalStream.Length;\r
+ Invoke(new UpdateProgessCallback(this.UpdateProgress), new object[] {_loacalStream.Length, fileSize});\r
}\r
\r
- responceStream.Close();\r
- loacalStream.Close();\r
+ _responceStream.Close();\r
+ _loacalStream.Close();\r
\r
if (flength != fileSize)\r
- Invoke(new DownloadFailedCallback(this.downloadFailed));\r
+ Invoke(new DownloadFailedCallback(this.DownloadFailed));\r
else\r
- Invoke(new DownloadCompleteCallback(this.downloadComplete));\r
+ Invoke(new DownloadCompleteCallback(this.DownloadComplete));\r
}\r
- catch (Exception)\r
+ catch\r
{\r
// Do Nothing \r
}\r
}\r
\r
- private void UpdateProgress(Int64 BytesRead, Int64 TotalBytes)\r
+ private void UpdateProgress(long bytesRead, long totalBytes)\r
{\r
- try\r
- {\r
- long p = (BytesRead * 100) / TotalBytes;\r
- progress = int.Parse(p.ToString());\r
- progress_download.Value = progress;\r
- lblProgress.Text = (BytesRead / 1024) + "k of " + (TotalBytes / 1024) + "k ";\r
- }\r
- catch (Exception exc)\r
- {\r
- MessageBox.Show("Integer Conversion Error On Download \n" + exc, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);\r
- }\r
+ long p = (bytesRead*100)/totalBytes;\r
+ int.TryParse(p.ToString(), out _progress);\r
+ progress_download.Value = _progress;\r
+ lblProgress.Text = (bytesRead/1024) + "k of " + (totalBytes/1024) + "k ";\r
}\r
\r
- private void downloadComplete()\r
+ private void DownloadComplete()\r
{\r
lblProgress.Text = "Download Complete";\r
btn_cancel.Text = "Close";\r
\r
- string tempPath = Path.Combine(Path.GetTempPath(), "handbrake-setup.exe");\r
- Process.Start(tempPath);\r
+ Process.Start(Path.Combine(Path.GetTempPath(), "handbrake-setup.exe"));\r
this.Close();\r
Application.Exit();\r
}\r
\r
- private void downloadFailed()\r
+ private void DownloadFailed()\r
{\r
lblProgress.Text = "Download Failed";\r
btn_cancel.Text = "Close";\r
\r
private void btn_cancel_Click(object sender, EventArgs e)\r
{\r
- try\r
- {\r
- webResponse.Close();\r
- responceStream.Close();\r
- loacalStream.Close();\r
- downloadThread.Abort();\r
- progress_download.Value = 0;\r
- lblProgress.Text = "Download Stopped";\r
- this.Close();\r
- }\r
- catch (Exception)\r
- {\r
- // Do nothing\r
- }\r
+ _killThread = true;\r
+ lblProgress.Text = "Cancelling ...";\r
+ if (_webResponse != null) _webResponse.Close();\r
+ if (_responceStream != null) _responceStream.Close();\r
+ if (_loacalStream != null) _loacalStream.Close();\r
+ this.Close();\r
}\r
}\r
}
\ No newline at end of file