/// <summary> /// Processes all remaining tasks. Call this periodically to allow the Dispatcher to handle dispatched tasks. /// Only call this inside the thread you want the tasks to process to be processed. /// </summary> public void ProcessTasks() { //Debug.Log("DEBUG 1"); if (UnityThreadHelper.IsWebPlayer ? UnityThreadHelper.WaitOne(dataEvent, 0) : dataEvent.WaitOne(0, false)) { ProcessTasksInternal(); } //Debug.Log("DEBUG 2"); }
/// <summary> /// Blocks the calling thread until the task has been ended or the given timeout value has been reached. /// </summary> /// <param name="seconds">Time in seconds this method will max wait.</param> public void WaitForSeconds(float seconds) { if (UnityThreadHelper.IsWebPlayer) { UnityThreadHelper.WaitOne(endedEvent, TimeSpan.FromSeconds(seconds)); } else { endedEvent.WaitOne(TimeSpan.FromSeconds(seconds)); } }
protected override IEnumerator Do() { //Debug.Log("DEBUG1"); while (!(UnityThreadHelper.IsWebPlayer ? UnityThreadHelper.WaitOne(exitEvent, 0) : exitEvent.WaitOne(0, false))) { //Debug.Log("DEBUG2"); if (!Dispatcher.ProcessNextTask()) { TaskDistributor.FillTasks(Dispatcher); if (Dispatcher.TaskCount == 0) { var result = WaitHandle.WaitAny(new WaitHandle[] { exitEvent, TaskDistributor.NewDataWaitHandle }); if (result == 0) { return(null); } TaskDistributor.FillTasks(Dispatcher); } } } return(null); }