/// <summary> /// Submits a composite task of type T to the desired consumer /// </summary> /// <typeparam name="T">IDataSet type</typeparam> /// <param name="task">the task to consume</param> public void SubmitCompositeTask <T>(ICompositeTask <T> task) where T : IDataSet { task.SetTaskReporter(taskReporter); if (task.GetTaskType() == CompositeTaskType.ASYNCHRONOUS) { if (!(task is ITaskObserver)) { Task.Factory.StartNew(() => { task.Run(); }); } } else if (task.GetTaskType() == CompositeTaskType.SYNCHRONOUS) { syncTaskQueue.Submit(task); } }