| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | using Ips.Library.Basic;using Ips.Library.DxpLib;using Ips.Sps.Scheduling.Entities;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Ips.Sps.Scheduling.SigAds{    public class AdcSctWorker : AdWorkerBase    {        public AdcSctWorker(RunTsk Tsk) : base(Tsk)        {        }        private DateTime _prevAdRefTime = DateTime.MinValue;        public override void Execute(CancellationToken token)        {            var tsk = CurrentTsk;            var adc = CurrentTsk.AdCard;            foreach (var tarSig in tsk.TarSigList)            {                var adFreq = tarSig.FreqStart;                do                {                    for (int i = 0; i < ToolConfig.GetAppSetting("ScoutAdTimes").To(3); i++)                    {                        var groupTime = DateTime.Now.ClearMillisecond();                        var adGroup = new AdSigGroup(tsk.TskId, groupTime);                        OnAdSigGroupStart(new AdSigGroupStartEventArgs(adGroup));                        try                        {                            token.ThrowIfCancellationRequested();                            if ((DateTime.Now - _prevAdRefTime).Minutes > 5)                            {                                foreach (var refSig in tsk.RefSigList)                                {                                    token.ThrowIfCancellationRequested();                                    var refAdRes = ExecuteAdc(adc, refSig, token);                                    var refSigRes = WrapSigAdResult(tsk, adGroup, adc, refSig, refAdRes.Result);                                    if (refSigRes != null)                                        adGroup.GroupSigList.Add(refSigRes);                                }                                _prevAdRefTime = DateTime.Now;                            }                            var adSig = tarSig.Copy();                            adSig.SigFreq = adFreq;                            var adcResult = ExecuteAdc(adc, adSig, token);                            var sigAdResult = WrapSigAdResult(tsk, adGroup, adc, adSig, adcResult.Result);                            if (sigAdResult != null)                                adGroup.GroupSigList.Add(sigAdResult);                        }                        catch (Exception ex)                        {                            ex.HandleCancelEx(m =>                            {                                IpsLogger.Error($"任务【{tsk.TskName}】,执行采集异常",m);                            });                        }                        finally                        {                            adGroup.GroupSigList.CompleteAdding();                        }                    }                    adFreq += tarSig.FreqStep;                } while (adFreq <= tarSig.FreqEnd);            }        }    }}
 |