Exemplo n.º 1
0
    void Start()
    {
        onChangeColor = ColorChanger;
        onChangeColor(Color.green);

        onTaskEnd += Task1;
        onTaskEnd += Task2;

        onTaskEnd?.Invoke();
    }
Exemplo n.º 2
0
        private void Run()
        {
            while (Running_)
            {
                if (!TaskQueue_.TryDequeue(out var task))
                {
                    Thread.Sleep(500);
                    continue;
                }

                Working_ = true;

                $"Convert input={task.InputFile} output={task.OutputFile} type={task.Type.ToString()}".Info();
                OnTaskStart.Invoke();

                try
                {
                    switch (task.Type)
                    {
                    case ConversionType.PDF:
                        Converter.ConvertToPDF(task.InputFile, task.OutputFile);
                        break;

                    case ConversionType.PNG:
                        Converter.ConvertToPNG(task.InputFile, task.OutputFile);
                        break;
                    }
                    task.Promise.SetResult(true);
                }
                catch (Exception e)
                {
                    e.Error("ConversionWorker", "Cannot convert due to");
                    task.Promise.SetResult(false);
                }
                OnTaskEnd.Invoke();

                Working_ = false;
            }
            "Conversion worker is end".Info();
        }
Exemplo n.º 3
0
    /*
     * public void RemoveSequentialTask(Func<IEnumerator> f) {
     *  SequentialTasks.Remove(f);
     * }
     */


    /*
     * public void RemoveImmediateTask(Func<IEnumerator> f) {
     *  ImmediateTasks.Remove(f);
     * }
     */

    IEnumerator RunTasks()
    {
        PC.SetPlayerInputEnabled(PlayerInputFlag.TASKMANAGER, false);

        /*
         * TaskEndFlag = new bool[ImmediateTasks.Count];
         * var Tasks = new List<IClockTask>(ImmediateTasks);
         * Tasks.AddRange(SequentialTasks);
         * Tasks.OrderBy((x) => x.StartClock);
         * foreach (var x in Tasks) {
         *  x.RunImmediately();
         * }
         */
        //SequentialTasks.OrderBy((x) => x.StartClock);

        /*
         * for (int i=0;i<ImmediateTasks.Count;i++) {
         *
         *  StartCoroutine(RunTaskAndRaiseFlag(ImmediateTasks[i], i));
         *
         * }
         * yield return new WaitUntil(() => { var result = true; foreach (var b in TaskEndFlag) { result &= b; } return result; });
         */
        for (int i = 0; i < UndoneTasks.Count; i++)
        {
            if (UndoneTasks[i].StartClock <= Clock)
            {
                SequentialTasks.Add(UndoneTasks[i]);
                UndoneTasks.RemoveAt(i);
                i--;
            }
        }

        Debug.Log("Clock : " + Clock);
        while (SequentialTasks.Count != 0)
        {
            SequentialTasks = SequentialTasks.OrderBy((x) => x.Priority).OrderBy((x) => x.StartClock).ToList();
            var t = SequentialTasks[0];
            if (t.HasIteration)
            {
                yield return(t.Run());
            }
            else
            {
                t.Run();
            }
            //Debug.Log("Task : " + t.ToString() + ", Priority : " + t.Priority + ", Time : " + t.StartClock + ", Frame : " + Time.frameCount + ", RealTime : " + Time.unscaledTime);
            SequentialTasks.Remove(t);
            OnTaskEnd?.Invoke();

            for (int i = 0; i < UndoneTasks.Count; i++)
            {
                if (UndoneTasks[i].StartClock <= Clock)
                {
                    SequentialTasks.Add(UndoneTasks[i]);
                    UndoneTasks.RemoveAt(i);
                    i--;
                }
            }
        }

        //ImmediateTasks.Clear();
        SequentialTasks.Clear();
        PC.SetPlayerInputEnabled(PlayerInputFlag.TASKMANAGER, true);
    }