Example #1
0
        private static async void Start(ParallelTaskQueueRx <string> parallelTaskQueue)
        {
            parallelTaskQueue.ProcessTaskOnSpecificQueue(async() =>
            {
                await Task.Delay(TimeSpan.FromSeconds(1));
                return("Queue1: #1 (1 sec delay)");
            }, "Queue1");

            parallelTaskQueue.ProcessTaskOnSpecificQueue(async() =>
            {
                await Task.Delay(TimeSpan.FromMilliseconds(250));
                return("Queue2: #1 (0,25 sec delay)");
            }, "Queue2");

            System.Console.WriteLine("----Waiting 0,25 sec----");
            await Task.Delay(TimeSpan.FromMilliseconds(250));

            parallelTaskQueue.ProcessTaskOnSpecificQueue(async() =>
            {
                await Task.Delay(TimeSpan.FromMilliseconds(250));
                return("Queue1: #2 (0,25 sec delay)");
            }, "Queue" +
                                                         "1");

            parallelTaskQueue.ProcessTaskOnSpecificQueue(async() =>
            {
                await Task.Delay(TimeSpan.FromMilliseconds(1250));
                return("Queue2 2 (1,25 sec delay)");
            }, "Queue2");

            parallelTaskQueue.ProcessTaskOnSpecificQueue(() => Task.FromResult("Queue2 #3 (no delay)"), "Queue2");

            parallelTaskQueue.ProcessTaskOnSpecificQueue(() => Task.FromResult("Queue2 #4 (no delay)"), "Queue2");

            System.Console.WriteLine("----Waiting 5 sec----");
            await Task.Delay(TimeSpan.FromSeconds(5));

            parallelTaskQueue.ProcessTaskOnSpecificQueue(async() =>
            {
                await Task.Delay(TimeSpan.FromSeconds(1));
                return("Queue1 #3 (1 sec delay)");
            }, "Queue1");

            parallelTaskQueue.ProcessTaskOnSpecificQueue(async() =>
            {
                await Task.Delay(TimeSpan.FromMilliseconds(250));
                return("Queue2 #5 (0,25 sec delay)");
            }, "Queue2");

            System.Console.WriteLine("----Waiting 0,25 sec----");
            await Task.Delay(TimeSpan.FromMilliseconds(250));

            parallelTaskQueue.ProcessTaskOnSpecificQueue(async() =>
            {
                await Task.Delay(TimeSpan.FromMilliseconds(250));
                return("Queue1 #4 (0,25 sec delay)");
            }, "Queue1");
        }
Example #2
0
        static void Main(string[] args)
        {
            var parallelTaskQueue = new ParallelTaskQueueRx <string>();

            var disp = parallelTaskQueue.ObservableResults.Subscribe(
                System.Console.WriteLine,
                ex => { System.Console.WriteLine($"Error: {ex.Message}"); },
                () => { System.Console.WriteLine("Completed"); });

            Start(parallelTaskQueue);

            System.Console.ReadKey();
        }