/// <summary> /// 并行下载歌词任务 /// </summary> /// <param name="down">插件</param> /// <param name="list">待下载列表</param> private void parallelDownLoadLryic(Dictionary <int, MusicInfoModel> list, IPlug_Lrc down) { setBottomStatusText(StatusHeadEnum.NORMAL, "正在下载歌词..."); disenabledButton(); progress_DownLoad.Maximum = list.Count; progress_DownLoad.Value = 0; Parallel.ForEach(list.Where(x => !x.Value.IsSuccess), new ParallelOptions() { MaxDegreeOfParallelism = SettingManager.SetValue.DownloadThreadNum }, (item) => { progress_DownLoad.Value += 1; string _path = FileUtils.BuildLrcPath(item.Value.Path); if (SettingManager.SetValue.IsIgnoreExitsFile && File.Exists(_path)) { listView_MusicInfos.Items[item.Key].SubItems[6].Text = "略过"; return; } try { bool _isSuccess = down.DownLoad(item.Value.Artist, item.Value.SongName, out byte[] _lrcData, SettingManager.SetValue.IsDownTranslate); if (!_isSuccess) { listView_MusicInfos.Items[item.Key].SubItems[6].Text = "失败"; return; } string _lrcPath = FileUtils.BuildLrcPath(item.Value.Path, SettingManager.SetValue.UserDirectory); _lrcData = encodingConvert(_lrcData); FileUtils.WriteFile(_lrcPath, _lrcData); item.Value.IsSuccess = true; listView_MusicInfos.Items[item.Key].SubItems[6].Text = "成功"; }