public static void Uninstall(CoroutinePool pool, IAsyncProcessor processor) { if (null == pool) { throw new ArgumentNullException("pool"); } if (processor.ThreadHandle > 0) { pool.StopCoroutine(processor.ThreadHandle); } processor.ThreadHandle = 0; processor.IsSetup = false; }
void OnGUI() { GUILayout.Box("mCoroutinePool.HasTaskRuning: " + mCoroutinePool.HasCoroutineRuning); GUILayout.Box("Task Wait Queue Count: " + mCoroutinePool.CoroutineWaitQueueCount); GUILayout.Box("Runing Task Count: " + mCoroutinePool.GetRuningCoroutineCount()); GUILayout.Box("Idle Task Count: " + mCoroutinePool.GetIdleCoroutineCount()); GUILayout.Box("HasCoroutineIdle: " + mCoroutinePool.HasCoroutineIdle); GUILayout.Box("HasCoroutineRuning: " + mCoroutinePool.HasCoroutineRuning); if (GUILayout.Button("Execute New Virtual Light Task")) { var r = mCoroutinePool.StartCoroutine(VirtualLightTask()); mCoroutineIDStack.Push(r.CoroutineID); } if (GUILayout.Button("Execute New Virtual Heavy Task")) { var r = mCoroutinePool.StartCoroutine(VirtualHeavyTask()); mCoroutineIDStack.Push(r.CoroutineID); } if (GUILayout.Button("Execute New Virtual Heavy Task(Can`t interruption)")) { var r = mCoroutinePool.StartCoroutine(VirtualHeavyTask2()); mCoroutineIDStack.Push(r.CoroutineID); } if (GUILayout.Button("Test Stop Task")) { if (mCoroutineIDStack.Count > 0) { var id = mCoroutineIDStack.Pop(); mCoroutinePool.StopCoroutine(id); } } if (GUILayout.Button("Test Immediate Stop Task")) { if (mCoroutineIDStack.Count > 0) { var id = mCoroutineIDStack.Pop(); mCoroutinePool.ImmediateStopCoroutine(id); } } }