AdjustSdk.Pcl.ActionQueue.ProcessTaskQueue C# (CSharp) Method

ProcessTaskQueue() private method

private ProcessTaskQueue ( ) : void
return void
        private void ProcessTaskQueue()
        {
            while (true)
            {
                // Logger.Verbose("ActionQueue {0} waiting", Name);
                ManualHandle.WaitOne(); // waits until the door is open
                while (true)
                {
                    Action action;
                    lock (InternalQueue)
                    {
                        // Logger.Verbose("ActionQueue {0} got {1} action to process", Name, InternalQueue.Count);
                        if (InternalQueue.Count == 0)
                        {
                            ManualHandle.Reset(); // closes the door (non-signals the wait handle)
                            break;
                        }
                        action = InternalQueue.Dequeue();
                        // Logger.Verbose("ActionQueue  {0} dequeued", Name);
                    }
                    try
                    {
                        action();
                    }
                    catch (Exception ex)
                    {
                        Logger.Error("ActionQueue {0} with exception ({1})", Name, ex);
                    }
                }
            }
        }