Exemple #1
0
        public static Future <T> Invoke <T> (this ThreadGroup group, Func <T> func, bool forMainThread = false)
        {
            var workItem = new FuncWorkItem <T> {
                Func   = func,
                Future = new Future <T>()
            };
            var queue = group.GetQueueForType <FuncWorkItem <T> >(forMainThread);

            queue.Enqueue(ref workItem);
            return(workItem.Future);
        }
        public void Enqueue <T1, T2>(Func <T1, T2> function, T1 input,
                                     WorkItemFinished method = null)
        {
            var item = new FuncWorkItem <T1, T2>(function, input);

            if (method != null)
            {
                item.FinishedEvent += method;
            }
            queue.Add(item);
        }
        public void Enqueue(Action action, WorkItemFinished method = null)
        {
            var item = new FuncWorkItem <int, int>(i => {
                action.Invoke();
                return(1);
            }, 1);

            if (method != null)
            {
                item.FinishedEvent += method;
            }
            queue.Add(item);
        }