private static void OnDownloadProgressChange(object sender, DownloadProgressChangeEventArgs e) { if ((DateTime.Now - _lastUpdateProgress).TotalSeconds < 2) { _lastUpdateProgress = DateTime.Now; return; } MediaFileDownload downloader = sender as MediaFileDownload; DownFactory.UpdateFileLenRecord(downloader.Tag as string, downloader.FileLength); foreach (DownInfo info in MyDownloading) { if (downloader.Tag as string == info.VID) { info.ProgressText = String.Format("正在下载:{0}M/{1}M", ((double)e.Progress / (double)(1024 * 1024)).ToString("f2"), ((double)e.TotalBytes / (double)(1024 * 1024)).ToString("f2")); info.ProgressNumeric = (double)e.Progress / (double)e.TotalBytes * 100; break; } } foreach (DBMyDownloadInfo downInfo in DownFactory.GetAllRecords()) { if (downInfo.VID == downloader.Tag as string) { if ((DateTime.Now.Second - _lastWriteDB.Second) >= _minDBOperationInterval) { DownFactory.UpdateRecord(downloader.Tag as string, -1, e.Progress); _lastWriteDB = DateTime.Now; } break; } } }