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); }