public override int GetHashCode() { return(FullSize.GetHashCode() + Thumbnail.GetHashCode()); }
private void downloadInternal1(string url, string path, string filename, MultiDownloader multiDownloader) { try { var httpWebRequest = HttpWebRequest.CreateHttp(url); //httpWebRequest.Method = "GET"; var filePath = Path.Combine(path, filename); var fi = new FileInfo(filePath); FullSize = GetLength(url); if (fi.Exists) { if (fi.Length >= FullSize) { return; } httpWebRequest.AddRange(fi.Length); } using (var fileStream = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite))//, FileShare.ReadWrite)) { using (var httpWebResponse = httpWebRequest.GetResponse() as HttpWebResponse) { using (var stream = httpWebResponse.GetResponseStream()) { var dt = DateTime.UtcNow; var buffsize = LiXMath.MIBIBYTE; var buffer = new byte[buffsize]; var speed = 0; while (!multiDownloader.IsStopped) { if (IsPaused) { buffsize = 1000; Task.Delay(1000).Wait(); } else { buffsize = buffer.Length; } var l = stream.Read(buffer, 0, buffsize); if (l <= 0 || multiDownloader.IsStopped) { break; } fileStream.Write(buffer, 0, l); //if (fileStream.Position >= FullSize) // break; speed += l; if (DateTime.UtcNow.Subtract(dt).TotalMilliseconds >= 1000) { CurrentSize = fileStream.Length; Speed = speed; Percentage = (int)(fileStream.Length / (float)FullSize * 100f); DownloadInfo = "[" + fileStream.Length.SizeSuffix(0) + "/" + FullSize.SizeSuffix(0) + "(" + Percentage + "%) " + "CN:" + multiDownloader.Download_Connections + " DL:" + speed.SizeSuffix(1) + " ETA: " + TimeSpan.FromSeconds((FullSize - fileStream.Length) / speed).ToString(@"hh\:mm\:ss") + "]"; speed = 0; dt = DateTime.UtcNow; } } }//.CopyTo(fileStream); } } } catch (Exception x) { } }