private void callback(DowloadInfoLineHandlerEventArgs e) { try { this.Invoke((MethodInvoker) delegate() { String fName = e.Link.Substring(urlRepositoryLocation.Length); int t = fName.IndexOf('&'); if (t > 0) { fName = fName.Substring(0, t - 1); } addToStatusLine(String.Format("Download : {0}/{1} - {2}", e.Count, e.FileLength, fName)); }); } catch (Exception) { } }
public void downloadData(string SourceUrl, string fileName, DowloadInfoLineHandler callback, long TimeStamp, long lenData) { newFileName = fileName; mSourceUrl = SourceUrl; this.m_callback = callback; mTimeStamp = TimeStamp; checkDir(newFileName); fileStream = new FileStream(newFileName, FileMode.Create); long istart = 0; int ReRead = 0; do { ReRead++; if (ReRead > 20) { break; } istart = fileStream.Length; downloadChunk(istart, lenData); long position = fileStream.Position; long d = RequestLen; DowloadInfoLineHandlerEventArgs e = new DowloadInfoLineHandlerEventArgs(position, d, String.Copy(SourceUrl), null); m_callback(e); } while (fileStream.Length < RequestLen); if (fileStream != null) { fileStream.Close(); } }