Exemple #1
0
        static void Main(string[] args)
        {
            var factory = new ActionDispatcherFactory(new Workerhandler());

            DisaptcherToken = factory.Start(new ActionDispatcherSettings
            {
                Schedule = ScheduleType.Parallel,
                Timeout  = TimeSpan.FromSeconds(2)
            });

            var select = args.Length > 0 ? args[0] : default(string) ?? "complete";

            Execute(select, args.Length > 1 ? int.Parse(args[1]) : 100).Wait();

            if (select == "pages")
            {
                Console.ReadKey();
            }

            Console.WriteLine("await stop");
            DisaptcherToken.WaitCompleted(120);
            DisaptcherToken.Dispose();
            Console.WriteLine("stopped success");
            //Console.ReadKey();
        }
        public BatchFixture()
        {
            MockActionInvoker.Setup(p => p.Invoke(It.IsAny <CancellationToken>())).ReturnsAsync(Guid.NewGuid().ToString());
            Factory = new ActionDispatcherFactory(MockWorkerHandler.Object);

            BatchActionInvoker.Setup(p => p.Invoke(It.IsAny <SomeBatchData[]>(), It.IsAny <CancellationToken>())).ReturnsAsync(Guid.NewGuid());
        }
        public WorkDispatcherFixture()
        {
            Factory = new ActionDispatcherFactory(MockWorkerHandler.Object);

            DispatcherToken = Factory.Start(new ActionDispatcherSettings
            {
                Timeout = TimeSpan.FromSeconds(10)
            });
        }
Exemple #4
0
        static void Main(string[] args)
        {
            var factory = new ActionDispatcherFactory(new Workerhandler());

            var stopwatch = new Stopwatch();

            stopwatch.Start();

            DisaptcherToken = factory.Start(new ActionDispatcherSettings
            {
                PrefetchCount = 10,
                Schedule      = ScheduleType.ParallelLimit,
                Timeout       = TimeSpan.FromSeconds(1.5)
            });

            Execute();

            stopwatch.Stop();

            Console.WriteLine($"STOP {stopwatch.Elapsed.TotalSeconds} queue count: {DisaptcherToken.QueueProcessCount}, current count: {DisaptcherToken.ProcessCount}");
        }
Exemple #5
0
        static void Main(string[] args)
        {
            var handler = new Workerhandler();

            var factory = new ActionDispatcherFactory();

            var dispatcher = factory.Start();

            var bathToken = dispatcher.Plugin.Batch(p =>
            {
                p.For <int>()
                .MaxCount(15)
                .Period(TimeSpan.FromSeconds(10))
                .TriggerCount(5)
                .FlushOnStop(false)
                .Bind(() =>
                {
                    return(new BatchDataWorkerInt());
                });

                p.For <string>()
                .MaxCount(10)
                .Period(TimeSpan.FromSeconds(1))
                //.TriggerCount(5)
                .FlushOnStop(true)
                .Bind(data =>
                {
                    var str = string.Join(", ", data.Select(s => s.ToString()));
                    Console.WriteLine(str);
                    return(Task.CompletedTask);
                });
            }).Start();

            //Task.Factory.StartNew(() =>
            //{
            //    for (var i = 0; i < 50; i++)
            //    {
            //        if ((i % 10) == 0)
            //        {
            //            //await Task.Delay(200);
            //        }

            //        bathToken.Send(i);
            //    }
            //});

            Task.Factory.StartNew(async() =>
            {
                for (var i = 1; i < 100; i++)
                {
                    if ((i % 2) == 0)
                    {
                        //await Task.Delay(100);
                    }

                    bathToken.Send($"hello {i}");
                }
            });

            Console.ReadKey();

            bathToken.Stop();
            bathToken.Dispose();

            dispatcher.WaitCompleted();

            Console.WriteLine("stop all");
        }