/// <summary> /// 注册下载段 /// </summary> /// <param name="downloadSegment"></param> public void RegisterDownloadSegment(DownloadSegment downloadSegment) { downloadSegment.Message = "Start RegisterDownloadSegment"; lock (_locker) { // 找到顺序 var n = DownloadSegmentList.FindIndex(temp => temp.StartPoint > downloadSegment.StartPoint); if (n < 0) { // 找不到一个比他大的,放在最后面 DownloadSegmentList.Add(downloadSegment); } else { // 原本是按照顺序的,找到第一个比他大的,放在前面 DownloadSegmentList.Insert(n, downloadSegment); } downloadSegment.Number = DownloadSegmentList.Count; downloadSegment.SegmentManager = this; } downloadSegment.Message = "Finish RegisterDownloadSegment"; }
internal (DownloadSegment?segment, int runCount, TimeSpan maxReportTime) GetDownloadSegmentStatus() { lock (_locker) { int maxCount = DownloadSegmentList.Count; TimeSpan maxReportTime = TimeSpan.MinValue; int runCount = 0; DownloadSegment?segment = null; for (int i = 0; i < maxCount; i++) { DownloadSegment downloadSegment = DownloadSegmentList[i]; if (downloadSegment.LoadingState == DownloadingState.Runing) { var reportTime = (DateTime.Now - downloadSegment.LastDownTime); if (reportTime >= maxReportTime) { maxReportTime = reportTime; segment = downloadSegment; } runCount++; } } return(segment, runCount, maxReportTime); } }
public void RegisterDownloadSegment(DownloadSegment downloadSegment) { lock (_locker) { // 找到顺序 var n = DownloadSegmentList.FindIndex(temp => temp.StartPoint > downloadSegment.StartPoint); if (n < 0) { DownloadSegmentList.Add(downloadSegment); } else { DownloadSegmentList.Insert(n, downloadSegment); } downloadSegment.Number = DownloadSegmentList.Count; downloadSegment.SegmentManager = this; } }