static void Main(string[] args) { JobSchedule schedule = new JobSchedule(); IJob job = new TestJob(); RepeatTrigger trigger = new RepeatTrigger(new TimeSpan(0, 0, 1), DateTime.Parse("9:00:00"), DateTime.Parse("22:08:00")); //trigger.IntervalBaseOnStartTime = true; //ITrigger trigger = new RepeatTrigger(new TimeSpan(0, 0, 5), DateTime.Parse("12:22:00"), 10); //ITrigger trigger = new SingleTrigger(DateTime.Parse("12:47:00")); //ITrigger trigger = new SingleTrigger(DateTime.Parse("12:59:00"),5, new TimeSpan(0, 0, 5)); //ITrigger trigger = new SingleTrigger(DateTime.Parse("12:00:00"), DateTime.Parse("21:59:00"), 5, new TimeSpan(0, 0, 5)); //ITrigger trigger2 = new SingleTrigger(DateTime.Parse("12:00:00"), DateTime.Parse("21:59:00"), 5, new TimeSpan(0, 0, 5)); schedule.Add(job, trigger); //IJob job2 = new TestJob("test2",new IJob[] { job}); schedule.Start(); //Thread.Sleep(1000); //schedule.Add(job2, trigger2); //schedule.ClearExpiredJobs(); Console.ReadKey(); //schedule.ClearExpiredJobs(); schedule.Stop(true); Console.ReadKey(); }
public override bool Execute(CancellationToken token) { DateTime curDay = DateTime.Today; Console.WriteLine("当前日期:{0}", curDay.ToLongDateString()); DateTime tradeDay = gmc.GetNextTradingDate("SHSE", curDay.AddDays(-1)); if (curDay == tradeDay) { List <Instrument> insts = new List <Instrument>(); foreach (string market in this.config.Markets.Split(',')) { insts.AddRange(gmc.GetInstruments(market, "stock")); } TradeDataAccessor.StoreInstruments(insts).Wait(); List <string> symbols = insts.Where(e => e.IsSuspended == false).Select(e => e.Symbol).ToList(); Console.WriteLine("市场<{0}>今日开市证券:{1}只", config.Markets, symbols.Count); foreach (DataJobConfig dataJobConfig in config.DataJobConfigs) { if (dataJobConfig.SubJobs != null && dataJobConfig.SubJobs.Count > 0) { List <IJob> jobQueue = new List <IJob>(); foreach (DataJobConfig subDataJobConfig in dataJobConfig.SubJobs) { int i = 0; float weightTotal = 0; foreach (DataCollector dataCollector in subDataJobConfig.DataCollectors) { weightTotal += dataCollector.Weight; int count = (int)Math.Round(symbols.Count * weightTotal) - i; object[] parameters = new object[] { dataCollector.MothedName, dataCollector.ClassName, symbols.GetRange(i, count), curDay }; i = i + count; Type type = Type.GetType(subDataJobConfig.ClassName, (aName) => Assembly.LoadFrom(aName.Name), (assem, name, ignore) => assem == null ? Type.GetType(name, false, ignore) : assem.GetType(name, false, ignore)); Job job = (Job)Activator.CreateInstance(type, parameters); jobQueue.Add(job); } } jobSche.Add(jobQueue, buildTrigger(dataJobConfig)); } else { int i = 0; float weightTotal = 0; foreach (DataCollector dataCollector in dataJobConfig.DataCollectors) { weightTotal += dataCollector.Weight; int count = (int)Math.Round(symbols.Count * weightTotal) - i; object[] parameters = new object[] { dataCollector.MothedName, dataCollector.ClassName, symbols.GetRange(i, count), curDay }; i = i + count; Type type = Type.GetType(dataJobConfig.ClassName, (aName) => Assembly.LoadFrom(aName.Name), (assem, name, ignore) => assem == null ? Type.GetType(name, false, ignore) : assem.GetType(name, false, ignore)); Job job = (Job)Activator.CreateInstance(type, parameters); jobSche.Add(job, buildTrigger(dataJobConfig), dataJobConfig.MaxTaskNumber); } } } } else { Console.WriteLine("今天不是交易日。"); } return(true); }