private async void buttonGen_Click(object sender, EventArgs e) { Log.Info("开始批量获取"); TaskbarProgress.SetState(this.Handle, TaskbarProgress.TaskbarStates.Indeterminate); List <string> lines = Regex.Split(textBoxAV.Text, "\r\n|\r|\n").ToList <string>(); List <BiliInterfaceInfo> ll = new List <BiliInterfaceInfo>(); string failedAVs = ""; var avs = from s in lines where s != "" select s; //IEnumerable<Task<BiliInterfaceInfo>> llasync = // from s in lines where s != "" select BiliInterface.GetInfoHTaskAsync(s); //Task<BiliInterfaceInfo>[] lltasks = llasync.ToArray(); //BiliInterfaceInfo[] lls = await Task.WhenAll(lltasks); Stopwatch sw = new Stopwatch(); sw.Restart(); BiliInterfaceInfo[] lls = await concurrentAsync( 100, avs, new Func <string, ScoreType, Task <BiliInterfaceInfo> >(BiliInterface.GetInfoTaskAsync), ScoreType.Guichu); Log.Info($"获取用时:{sw.ElapsedMilliseconds}ms"); sw.Stop(); Log.Info("正在排序"); foreach (BiliInterfaceInfo info in lls) { if (info.pic != null) { ll.Add(info); } else { failedAVs += info.avnum + ";"; } } ll.Sort(sortt); for (int i = 1; i <= ll.Count; i++) { ll[i - 1].Fpaiming = i; } dataGridViewRAW.DataSource = ll; if (failedAVs != "") { Log.Error("注意!下列视频数据未正确获取!\r\n" + failedAVs); } textBoxOut.Text = await BiliInterface.GetCsvInfosAsync(ll); TaskbarProgress.SetState(this.Handle, TaskbarProgress.TaskbarStates.NoProgress); Log.Info("批量获取完成"); }