Beispiel #1
0
        public async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            var thread1 = new Thread(() => device1.ExecuteAsync(stoppingToken));

            thread1.Name = "Device1";


            var thread2 = new Thread(() => device2.ExecuteAsync(stoppingToken));

            thread2.Name = "Device2";

            var thread3 = new Thread(() => device3.ExecuteAsync(stoppingToken));

            thread3.Name = "Device3";

            thread1.Start();
            thread2.Start();
            thread3.Start();

            int delayTime = settings.Delay;

            while (!stoppingToken.IsCancellationRequested)
            {
                Customer customer = new Customer();
                queue1.MoveToQueue(customer);

                Thread.Sleep(delayTime);
            }
        }
Beispiel #2
0
        public Source()
        {
            servedCustomers = new List <Customer>();

            settings = new Settings();
            queue1   = new CustomQueue();
            queue2   = new CustomQueue(QUEUE_2_LIMIT);
            device1  = new Device(DEVICE_1_MU, queue1, x => queue2.MoveToQueue(x));

            device2 = new Device(DEVICE_2_MU, queue2, x => servedCustomers.Add(x));
            device3 = new Device(DEVICE_3_MU, queue2, x => servedCustomers.Add(x));
        }
Beispiel #3
0
        public void ExecuteAsync(CancellationToken stoppingToken)
        {
            void Init()
            {
                servedCustomers = new List <Customer>();

                queue1 = new CustomQueue(queue1Name, stoppingToken);
                queue2 = new CustomQueue(queue2Name, Settings.QUEUE_2_LIMIT, stoppingToken);

                helpQueue11 = new CustomQueue("HelpQueue1", 1, stoppingToken);
                helpQueue12 = new CustomQueue("HelpQueue2", 1, stoppingToken);

                device11 = new Device("Device1_1", Settings.DEVICE_1_MU, queue1, x => helpQueue11.MoveToQueue(x), WorkMode.Intensity);
                device12 = new Device("Device1_2", Settings.DEVICE_1_MU, queue1, x => helpQueue12.MoveToQueue(x), WorkMode.Intensity);
                device21 = new Device("Device2_1", Settings.DEVICE_2_MU, queue2, x => EndWork(x), WorkMode.Intensity);
                device22 = new Device("Device2_2", Settings.DEVICE_2_MU, queue2, x => EndWork(x), WorkMode.Intensity);

                helpDevice11 = new Device("HelpDevice", 0, helpQueue11, x => queue2.MoveToQueue(x), WorkMode.Time);
                helpDevice12 = new Device("HelpDevice", 0, helpQueue12, x => queue2.MoveToQueue(x), WorkMode.Time);
            }

            Init();

            var thread1 = new Thread(() => device11.ExecuteAsync(stoppingToken));

            thread1.Name = "Device11";

            var thread2 = new Thread(() => device12.ExecuteAsync(stoppingToken));

            thread2.Name = "Device12";

            var thread3 = new Thread(() => device21.ExecuteAsync(stoppingToken));

            thread3.Name = "Device21";

            var thread4 = new Thread(() => device22.ExecuteAsync(stoppingToken));

            thread4.Name = "Device22";

            var thread5 = new Thread(() => helpDevice11.ExecuteAsync(stoppingToken));

            thread5.Name = "HelpDevice11";
            var thread6 = new Thread(() => helpDevice12.ExecuteAsync(stoppingToken));

            thread6.Name = "HelpDevice12";

            thread1.Start();
            thread2.Start();
            thread3.Start();
            thread4.Start();
            thread5.Start();
            thread6.Start();

            int delayTime = Settings.Delay;
            int count     = 0;

            while (!stoppingToken.IsCancellationRequested)
            {
                Customer customer = new Customer($"Customer {count}");
                customerCount++;

                customer.WriteToFile("Has been created");
                customer.CreateMessage("Has been created");

                queue1.MoveToQueue(customer);

                Thread.Sleep(delayTime);
                count++;
            }
        }
Beispiel #4
0
        public void ExecuteAsync(CancellationToken stoppingToken)
        {
            void Init()
            {
                servedCustomers = new List <Customer>();

                queue1 = new CustomQueue(queue1Name, Settings.QUEUE_1_LIMIT, stoppingToken);
                queue2 = new CustomQueue(queue2Name, Settings.QUEUE_2_LIMIT, stoppingToken);

                helpQueue = new CustomQueue("HelpQueue", 1, stoppingToken);

                device1 = new Device("Device1", Settings.DEVICE_1_MU, queue1, x => helpQueue.MoveToQueue(x), WorkMode.Intensity);
                device2 = new Device("Device2", Settings.DEVICE_2_TIME, helpQueue, x => queue2.MoveToQueue(x), WorkMode.Time);
                device3 = new Device("Device3", Settings.DEVICE_3_TIME, queue2, x =>
                {
                    EndWork(x);
                }, WorkMode.Time);

                helpDevice = new Device("HelpDevice", 0, helpQueue, x => queue2.MoveToQueue(x), WorkMode.Time);
            }

            Init();

            var thread1 = new Thread(() => device1.ExecuteAsync(stoppingToken));

            thread1.Name = "Device1";

            var thread2 = new Thread(() => device2.ExecuteAsync(stoppingToken));

            thread2.Name = "Device2";

            var thread3 = new Thread(() => device3.ExecuteAsync(stoppingToken));

            thread3.Name = "Device3";

            var thread4 = new Thread(() => helpDevice.ExecuteAsync(stoppingToken));

            thread4.Name = "HelpDevice";

            thread1.Start();
            thread2.Start();
            thread3.Start();
            thread4.Start();

            int delayTime = Settings.Delay;
            int count     = 0;

            while (!stoppingToken.IsCancellationRequested)
            {
                Customer customer = new Customer($"Customer {count}");
                customerCount++;

                customer.WriteToFile("Has been created");
                customer.CreateMessage("Has been created");

                if (queue1.Count >= Settings.QUEUE_1_LIMIT)
                {
                    customer.WriteToFile("Has been rejected");
                    customer.CreateMessage("Has been rejected");
                    customer.IsRejected = true;

                    EndWork(customer);
                }
                else
                {
                    queue1.MoveToQueue(customer);
                }

                Thread.Sleep(delayTime);
                count++;
            }
        }