- 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
+ 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
+ long fileSize = _webResponse.ContentLength;\r
+\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
+ {\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
+\r
+ if (flength != fileSize)\r
+ Invoke(new DownloadFailedCallback(this.DownloadFailed));\r
+ else\r
+ Invoke(new DownloadCompleteCallback(this.DownloadComplete));\r