示例#1
0
        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();
        }
示例#2
0
 static void Configure()
 {
     CitizensHost.ConfigureServiceProvider((configure) =>
     {
         configure.AddCoreServices();
         configure.AddYxcicSyncService(SyncHistory);
         configure.AddYxGovnewsSyncService(SyncHistory);
         configure.AddYxHouseSyncSerivce(SyncHistory);
     });
 }
示例#3
0
        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());
        }
示例#4
0
        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)]);
            }
        }
示例#5
0
        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();
        }