public void TaskDone(AsynTask task) { lock (doneQueueLock) { doneQueue.Enqueue(task as UnityCbTask); } }
public virtual void AddTask(AsynTask task) { if (!m_isRunning) { Start(); } lock (m_waitingTaskQueueLock) { this.m_waitingTaskQueue.Enqueue(task); Monitor.Pulse(m_waitingTaskQueueLock); } }
private static void Upload(AsynTask task) { LogTask ltask = task as LogTask; string url = Global.Instance.LogServerUrl; if (string.IsNullOrEmpty(url)) { return; } string saveName = ""; //获取机器唯一标志 if (string.IsNullOrEmpty(saveName)) { return; } WebExecWorker.Instance.UploadFile(WebExecWorker.DEFAULT_ID, url, ltask.m_flog.path, "file", saveName, true, true); }
private void Run() { while (m_isRunning) { if (0 == m_runningTaskQueue.Count) { lock (m_waitingTaskQueueLock) { if (0 == m_waitingTaskQueue.Count) { Monitor.Wait(m_waitingTaskQueueLock); if (!m_isRunning) { break; } } Queue <AsynTask> temp = m_runningTaskQueue; m_runningTaskQueue = m_waitingTaskQueue; m_waitingTaskQueue = temp; } } else { while (m_runningTaskQueue.Count > 0 && m_isRunning) { AsynTask task = m_runningTaskQueue.Dequeue(); try { task.Execute(); } catch (Exception ex) { UnityEngine.Debug.LogException(ex); } } } } m_runningTaskQueue.Clear(); m_waitingTaskQueue.Clear(); OnClosed(); }
public override void AddTask(AsynTask task) { ++taskCounts; task.CallBackHandler = this.TaskDone; base.AddTask(task); }