public Scheduler(string fileName, ITwitterContextList contextList, ITwitterConfiguration twitterConfig) { FileName = fileName; JobProcessors.Add(SchedulerJobType.DeleteStatus, new DeleteStatusProcessor(contextList)); JobProcessors.Add(SchedulerJobType.CreateStatus, new CreateStatusProcessor(contextList, twitterConfig)); if (File.Exists(FileName)) { var json = File.ReadAllText(FileName); try { Jobs.AddRange(JsonConvert.DeserializeObject <List <SchedulerJob> >(json)); } catch (Exception ex) { LogTo.WarnException("Failed to load joblist from file", ex); } } JobIdCounter = Jobs.Any() ? Jobs.Max(j => j.JobId) + 1 : 0; SleepTime = 1000; }
public string SetStandartData() { if (!Jobs.Any()) { try { Jobs.AddRange(new List <Job>() { new Job() { Jobtype = "Менеджер" }, new Job() { Jobtype = "Повар" }, new Job() { Jobtype = "Доставка" }, new Job() { Jobtype = "Официант" } }); if (!EatTypes.Any()) { EatTypes.AddRange(new List <EatType>() { new EatType() { EatTypeName = "Завтрак" }, new EatType() { EatTypeName = "Обед" }, new EatType() { EatTypeName = "Ужин" }, }); } SaveChanges(); return(0.ToString()); } catch (Exception e) { return(e.ToString()); } } return("1"); }
private async Task ExecuteSearchCommand() { IsBusy = true; var jobsList = await SearchJob(); if (Jobs.Any()) { Jobs.Clear(); } if (jobsList != null) { Jobs.AddRange(jobsList); } IsBusy = false; }
public VesselKit(PartModule host, ShipConstruct ship, bool assembled = true, bool simulate = false) : this() { Host = host; Name = Localizer.Format(ship.shipName); if (!simulate) { strip_resources(ship, assembled); Blueprint = ship.SaveShip(); } count_kit_resources(ship); ShipMetric = new Metric(ship, true, true); DockingNodes = FindDockingNodes(ship, ShipMetric); Jobs.AddRange(ship.Parts.ConvertAll(p => new PartKit(p, assembled))); SetStageComplete(DIYKit.ASSEMBLY, assembled); HasLaunchClamps = ship.HasLaunchClamp(); CurrentIndex = 0; }
public VesselKit(PartModule host, ShipConstruct ship, bool assembled = true, bool simulate = false) : this() { Host = host; Name = Localizer.Format(ship.shipName); if (!simulate) { strip_resources(ship, assembled); Blueprint = ship.SaveShip(); } var create_resources = count_kit_resources(ship, assembled); ShipMetric = new Metric(ship, true, true); DockingNodes = FindDockingNodes(ship, ShipMetric); Jobs.AddRange(ship.Parts.ConvertAll(p => new PartKit(p, assembled))); create_resources.ForEach(r => Jobs.Add(new PartKit(r.Value.name, r.Value.mass, r.Value.cost, r.Value.type == KitResourceInfo.ResourceType.CONSTRUCTED))); SetStageComplete(DIYKit.ASSEMBLY, assembled); HasLaunchClamps = ship.HasLaunchClamp(); CurrentIndex = 0; }
public override void Load(ConfigNode node) { base.Load(node); if (node.HasValue("Completeness")) { //Utils.Log("VesselKit.Load: {}\n{}", this, node);//debug //deprecated config conversion CurrentIndex = 0; var list = new PersistentList <PartKit>(); var n = node.GetNode("BuiltParts"); if (n != null) { list.Load(n); Jobs.AddRange(list.Where(j => j.Valid)); list.Clear(); CurrentIndex = Jobs.Count; } n = node.GetNode("PartUnderConstruction"); if (n != null) { var p = new PartKit(); p.Load(n); if (p.Valid) { Jobs.Add(p); } } n = node.GetNode("UnbuiltParts"); if (n != null) { list.Load(n); Jobs.AddRange(list.Where(j => j.Valid)); list.Clear(); } //Utils.Log("VesselKit.Loaded: {}", this);//debug } }
/// <summary>开始</summary> public void Start() { // 如果没有指定工作者,则全局扫描 var bs = Jobs.ToList(); if (bs.Count == 0) { XTrace.WriteLine("没有可用工作者"); return; } // 启动作业提供者,获取所有作业 var prv = Provider; if (prv == null) { prv = Provider = new JobFileProvider(); } if (prv.Schedule == null) { prv.Schedule = this; } prv.Start(); var jobs = prv.GetJobs(bs.Select(e => e.Name).ToArray()); if (jobs == null || jobs.Length == 0) { XTrace.WriteLine("没有可用作业"); return; } // 输出日志 var mode = $"定时{Period}秒"; var msg = $"启动任务调度引擎[{prv}],作业[{bs.Count}]项,模式:{mode}"; XTrace.WriteLine(msg); // 设置日志 foreach (var wrk in bs) { wrk.Schedule = this; wrk.Provider = prv; var job = wrk.Model = jobs.FirstOrDefault(e => e.Name == wrk.Name); if (job != null && job.Mode == 0) { job.Mode = wrk.Mode; } wrk.Log = XTrace.Log; wrk.Start(); } // 全部启动后再加入集合 Jobs.Clear(); Jobs.AddRange(bs); // 定时执行 if (Period > 0) { _timer = new TimerX(Loop, null, 100, Period * 1000, "Job") { Async = true } } ; }
/// <summary>Adds the specified new jobs.</summary> /// <param name="newJobs">The new jobs.</param> public void Add(params Job[] newJobs) => // DONTTOUCH: please DO NOT remove .Freeze() call. Jobs.AddRange(newJobs.Select(j => j.Freeze()));
public void AddJobs(params Job[] jobs) { Jobs.AddRange(jobs); }