/// <summary> /// 获取两个文件信息集合的差集,用于得到更新列表 /// </summary> /// <param name="clientfiles">客户端上传的已存在文件集合</param> /// <returns>需要更新的文件集合</returns> public FileInfoCollection GetDownloadList(FileInfoCollection clientfiles) { lock (this) { FileInfoCollection fc = new FileInfoCollection(); IEnumerator ie = this.GetEnumerator(); while (ie.MoveNext()) { FileInfo fi = ((DictionaryEntry)ie.Current).Value as FileInfo; int id = (int)((DictionaryEntry)ie.Current).Key; if (clientfiles.ContainsKey(id) && clientfiles[id].Equals(fi)) { //重新取得修改日期及时间 } else { fc.Add(fi.ID, fi); } } if (clientfiles.FileResume != null)//如果存在续传文件 { if (this.ContainsKey(clientfiles.FileResume.ID) && this[clientfiles.FileResume.ID].Equals(clientfiles.FileResume))//比对续传文件的信息,如果不相同则重新发送 { fc.SetFiletoResumeInfo(clientfiles.FileResume.ID, clientfiles.FileResume.Date , clientfiles.FileResume.Length, clientfiles.FileOffSet); } } return fc; } }
/// <summary> /// 复制一个相同的文件信息集合 /// </summary> /// <returns>复制得到的集合</returns> public new FileInfoCollection Clone() { lock (this) { FileInfoCollection fc = new FileInfoCollection(); IEnumerator ie = this.GetEnumerator(); while (ie.MoveNext()) { FileInfo fi = ((DictionaryEntry)ie.Current).Value as FileInfo; fc.Add(fi.ID, fi); } return fc; } }