コード例 #1
0
ファイル: MainWork.cs プロジェクト: ertprs/Alpha.Collector
 /// <summary>
 /// 执行抓取
 /// </summary>
 private void DoPick()
 {
     Task.Run(() =>
     {
         List <Type> managerList = ReflectionHelper.GetClasses <PickerManager>();//.Where(t => t.Name == "JSK3PickerManager").ToList();
         ParallelOptions options = new ParallelOptions {
             MaxDegreeOfParallelism = 10
         };
         Parallel.ForEach(managerList, type =>
         {
             try
             {
                 PickerManager pickerManager = Activator.CreateInstance(type) as PickerManager;
                 while (true)
                 {
                     try
                     {
                         List <OpenResult> list = pickerManager.DoPick(TaskCount);
                         int result             = OpenResultApp.Insert(list);
                         if (result < 0)
                         {
                             lock (locker)
                             {
                                 log.Error($"插入结果到数据库失败。数量:{list.Count},类型:{type.ToString()}");
                             }
                         }
                         Thread.Sleep(SleepTime);
                     }
                     catch (Exception ex)
                     {
                         lock (locker)
                         {
                             this.log.Error($"抓取异常。详情:{ex.ToString()}");
                         }
                         Thread.Sleep(SleepTime);
                     }
                 }
             }
             catch (Exception ex)
             {
                 lock (locker)
                 {
                     this.log.Error($"抓取异常。详情:{ex.ToString()}");
                 }
             }
         });
     });
 }