public void MultipleManagers()
        {
            using (var manager = TaskManagerFactory.Create(() => TestDbContext.Create(), new TaskManagerOptions()
            {
                MainLoopWait = 100
            }))
                using (var manager2 = TaskManagerFactory.Create(() => TestDbContext.Create(), new TaskManagerOptions()
                {
                    MainLoopWait = 100
                }))
                    using (var manager3 = TaskManagerFactory.Create(() => TestDbContext.Create(), new TaskManagerOptions()
                    {
                        MainLoopWait = 100
                    }))
                    {
                        var TOTAL_TASK_COUNT = 80;

                        manager.StartListener();
                        manager2.StartListener();
                        manager3.StartListener();

                        Thread.Sleep(300);

                        var guid = "2A71134F-AED4-47D5-AB3C-69B3EBC87C00";
                        manager.RegisterTaskType(typeof(MyTask), new TaskSettings(guid));
                        manager2.RegisterTaskType(typeof(MyTask), new TaskSettings(guid));
                        manager3.RegisterTaskType(typeof(MyTask), new TaskSettings(guid));

                        MyTask.TaskExecuted = 0;
                        MyTask.elements     = new List <int?>();
                        MyTask.duplicate    = new List <int?>();
                        var taskIds = new List <int>();

                        for (int i = 0; i < TOTAL_TASK_COUNT; i++)
                        {
                            taskIds.Add(manager.EnqueueSingleTask <MyTask, int?>(i));
                        }

                        using (var db = TestDbContext.Create())
                        {
                            while (db.SingleTasks.Where(t => taskIds.Contains(t.Id)).Count(t => t.Status == SingleTaskStatus.Scheduled) > 0)
                            {
                                Thread.Sleep(333);
                            }
                        }

                        Assert.True(manager.IsListenning);
                        Assert.True(manager2.IsListenning);
                        Assert.True(manager3.IsListenning);

                        manager.StopListener(true);
                        manager2.StopListener(true);
                        manager3.StopListener(true);

                        Assert.True(MyTask.TaskExecuted == TOTAL_TASK_COUNT);
                        Assert.True(MyTask.elements.Count() == TOTAL_TASK_COUNT);
                        Assert.True(MyTask.duplicate.Count() == 0);

                        Assert.True(manager.TasksExecutedCount > 0);
                        Assert.True(manager2.TasksExecutedCount > 0);
                        Assert.True(manager3.TasksExecutedCount > 0);

                        Console.AppendLine($"manager 1: {manager.TasksExecutedCount}");
                        Console.AppendLine($"manager 2: {manager2.TasksExecutedCount}");
                        Console.AppendLine($"manager 3: {manager3.TasksExecutedCount}");
                        Assert.Equal(TOTAL_TASK_COUNT, manager.TasksExecutedCount + manager2.TasksExecutedCount + manager3.TasksExecutedCount);
                    }
        }