Example #1
0
        // depends
        // input
        public WorkTask(NamedTasks Tasks, string Name)
            : base(Tasks, Name, null)
        {
            this.Yield =
                (Task, Arguments) =>
                {

                    if (Task.HasActiveDependencies)
                    {
                        Console.WriteLine("blocked");
                        return null;
                    }

                    var Commit = default(Action);

                    //Console.WriteLine(Task + " before FetchInput");
                    this.FetchInput(
                        Input =>
                        {
                            Commit = this.YieldWork(this, Input);
                        }
                    );
                    //Console.WriteLine(Task + " after FetchInput");

                    return delegate
                    {
                        if (Commit != null)
                            Commit();
                    };
                };
        }
Example #2
0
        public NamedTask(NamedTasks Tasks, string Name, Func<NamedTask, string, Action> Yield)
        {
            if (Tasks == null)
                throw new NotSupportedException("Tasks null");

            this.Tasks = Tasks;
            this.Name = Name;

            if (Yield != null)
                this.Yield = Yield;

            this.Tasks.Items = new NamedTask.ChainLink(this) { Link = this.Tasks.Items };

            this.Context = Tasks.TasksContext.CreateSubdirectory(Name);

            this.Lock = new DirectoryInfo(Path.Combine(this.Context.FullName, "Lock"));

            this.CounterPath = Path.Combine(this.Context.FullName, "Counter");
        }
        //public event Action Tick;
        public SchedulerTask(NamedTasks Tasks, string Name, int Interval)
            : base(Tasks, Name, null)
        {
            this.Interval = Interval;
            this.Description = "Scheduler task is responsible for dispatching tasks on regular basis. Interval: " + Interval;

            this.Yield =
                (Task, Arguments) =>
                {
                    Console.WriteLine("Counter: " + this.Counter);

                    ForkTasksWithInput();

                    Thread.Sleep(Interval);

                    return delegate
                    {
                        // tick complete.
                    };
                };
        }