Example #1
0
 /// <summary>
 /// Schedules work for this worker.
 /// </summary>
 internal void Schedule(AsyncWorkUnit inUnit)
 {
     #if SUPPORTS_THREADING
     lock (m_LockObject)
     {
         if ((inUnit.AsyncFlags & AsyncFlags.MainThreadOnly) != 0)
         {
             m_Scheduler.Log("Scheduling {0} on main thread", inUnit);
             m_MainThreadOnlyQueue.Enqueue(inUnit);
         }
         else
         {
             m_Scheduler.Log("Scheduling {0} in background", inUnit);
             m_BackgroundQueue.Enqueue(inUnit);
         }
     }
     #else
     if ((inUnit.AsyncFlags & AsyncFlags.MainThreadOnly) != 0)
     {
         m_Scheduler.Log("Scheduling {0} on main thread", inUnit);
         m_MainThreadOnlyQueue.Enqueue(inUnit);
     }
     else
     {
         m_Scheduler.Log("Scheduling {0} in background", inUnit);
         m_BackgroundQueue.Enqueue(inUnit);
     }
     #endif // SUPPORTS_THREADING
 }
Example #2
0
        // Cancels all future steps
        private void Cancel()
        {
            for (int i = m_Nested.Count - 1; i >= 0; --i)
            {
                m_Nested[i].Cancel();
            }
            m_Nested.Clear();

            if (m_Status == AllCompleteFlag)
            {
                return;
            }

            if ((m_Status & CancelledFlag) == 0)
            {
                m_Scheduler.Log("Cancelling {0}", m_Name);
                m_Status |= CancelledFlag;
            }
        }