static void Main(string[] args) { //List<IPicker> list = new AHK3PickerManager().GetPickerList(); //MainWork work = new MainWork(); //work.Run(); List <OpenResult> resultList; PickerManager manager = new FC3DPickerManager(); //List<IPicker> pickerList = manager.GetPickerList(); IPicker picker = manager.GetPicker(DataSourceEnum._168); resultList = picker.Run(); //int result = OpenResultApp.Insert(resultList); Console.Read(); }
/// <summary> /// 执行抓取 /// </summary> /// <param name="taskCount">线程数量</param> public List <OpenResult> DoPick(int taskCount) { //取数据源开关 List <DataSource> dataSourceList = CacheManager.GetOrSet(CacheKey.DATASOURCE_KEY, () => { return(DataSourceApp.GetList().Where(d => d.status == 1).ToList()); }, 7 * 24 * 60 * 60); if (dataSourceList.Count == 0) { throw new Exception($"没有可用的数据源"); } string dataSourceStr = dataSourceList.Aggregate(string.Empty, (c, d) => c + d.name + ",").TrimEnd(','); Type type = typeof(DataSourceEnum); List <FieldInfo> fieldInfo = type.GetFields().ToList(); List <OpenResult> list = new List <OpenResult>(); ParallelOptions option = new ParallelOptions { MaxDegreeOfParallelism = Math.Min(taskCount, fieldInfo.Count) }; Parallel.ForEach(fieldInfo, option, field => { string dataSource = field.GetValue(null).ToString(); if (dataSourceStr.Contains(dataSource)) { IPicker picker = this.GetPicker(dataSource); if (picker != null) { list.AddRange(picker.Run()); } } }); list = DistinctEx(list); return(list.OrderBy(o => o.issue_number).ToList()); }