public static Thread RunAsync(LoomBase para, LoomCallBack a) { para.mAction = a; Initialize(); while (numThreads >= maxThreads) { Thread.Sleep(1); } Interlocked.Increment(ref numThreads); ThreadPool.QueueUserWorkItem(RunAction, para); return(null); }
private static void RunAction(object para) { try { LoomBase loomObj = (LoomBase)para; loomObj.mAction(loomObj); } catch { } finally { Interlocked.Decrement(ref numThreads); } }
public static void QueueOnMainThread(LoomBase para, LoomCallBack action, float time) { para.mAction = action; if (time != 0) { lock (Current._delayed) { Current._delayed.Add(new DelayedQueueItem { time = Time.time + time, Para = para }); } } else { lock (Current._actions) { Current._actions.Add(para); } } }
void OnDone(LoomBase param) { m_IsDone = true; }
private void OnDone(LoomBase param) { isDone = true; }
public static void QueueOnMainThread(LoomBase para, LoomCallBack action) { QueueOnMainThread(para, action, 0f); }