コード例 #1
0
ファイル: TaskGraph.cs プロジェクト: irafunesta/Forge
        public void SetResult(object host, object result)
        {
            AdapterContextBase context = (host as AdapterContextBase);

            if (context != null)
            {
                Task task = (context.Args[0] as Task);
                if (task.IsPending)
                {
                    while (!pendingTasks.Enqueue(task))
                    {
                        ;
                    }
                }
                else
                {
                    if (task.Child == null && task.OutputPins.Length > 0)
                    {
                        GenerateInputTasks(new List <Task>(new Task[] { task }));
                    }

                    Task child = task.Child;
                    while (child != null)
                    {
                        Dispatch(child);
                        child = child.Next;
                    }
                    Interlocked.Decrement(ref activeTasks);
                }
            }
        }
コード例 #2
0
ファイル: TaskGraph.cs プロジェクト: irafunesta/Forge
        public void SetError(object host, Exception error)
        {
            AdapterContextBase context = (host as AdapterContextBase);

            if (context != null)
            {
                if (Application.LogSeverity > SeverityFlags.Minimal)
                {
                    Application.Error(SeverityFlags.None, "{0}{1}{2}", error.Message, Environment.NewLine, error.StackTrace);
                }
                else
                {
                    Application.Error(SeverityFlags.None, error.Message);
                }

                Interlocked.Increment(ref errors);
                Interlocked.Decrement(ref activeTasks);
            }
        }