static void StartSyncHistory() { var workitems = CitizensHost.GetServices <ICitizensWorkItem>(); var scheduler = new WebJobScheduler((cancellation) => { Parallel.ForEach(workitems, new ParallelOptions() { MaxDegreeOfParallelism = 5 }, (workitem) => { try { workitem.Execute(); } catch (Exception ex) { Logger.Error(ex.Message, ex); } }); }); scheduler.Shutdown += (sender, args) => { foreach (var workitem in workitems) { workitem.Abort(); } }; scheduler.Start(); Console.Read(); }
static void Configure() { CitizensHost.ConfigureServiceProvider((configure) => { configure.AddCoreServices(); configure.AddYxcicSyncService(SyncHistory); configure.AddYxGovnewsSyncService(SyncHistory); configure.AddYxHouseSyncSerivce(SyncHistory); }); }
protected virtual string[] DetectImages(HtmlNode node, string[] defaultImages, string prefix) { var counter = CitizensHost.GetService <Counter>().Get(prefix); var images = node == null ? null : node.SelectNodes("./*/img"); if (images == null || images.Count.Equals(0)) { if (defaultImages != null) { return(new string[] { defaultImages[Math.Abs(counter % defaultImages.Length)] }); } } ; return(images.Select(o => o.Attributes["src"].Value).ToArray()); }
protected virtual string DetectConverImage(HtmlNode node, string[] defaultImages, string prefix) { var counter = CitizensHost.GetService <Counter>().Get(prefix); var image = node == null ? null : node.SelectSingleNode("./*/img"); if (image == null) { return(defaultImages[Math.Abs(counter % defaultImages.Length)]); } ; if (image.Attributes["src"].Value.IsImageUrl()) { return(image.Attributes["src"].Value); } else { return(defaultImages[Math.Abs(counter % defaultImages.Length)]); } }
static void StartAuto() { var workitems = CitizensHost.GetServices <ICitizensWorkItem>(); var scheduler = new WebJobScheduler((cancellation) => { Parallel.ForEach(workitems, new ParallelOptions() { MaxDegreeOfParallelism = 5 }, (workitem) => { while (cancellation.IsCancellationRequested == false) { try { var offset = 60D * 60;//5 mins workitem.Execute(); for (var i = 0; ((cancellation.IsCancellationRequested == false) && (i < offset)); i++) { Thread.Sleep(1000); } } catch (Exception ex) { Logger.Error(ex.Message, ex); } } }); }); scheduler.Shutdown += (sender, args) => { foreach (var workitem in workitems) { workitem.Abort(); } }; scheduler.Start(); }