Пример #1
0
        private void Work()
        {
            try
            {
                SubThreadChanger = ThreadChanger.GetSubThreadChanger();
                while (true)
                {
                    QueueTask task = null;

                    lock (_locker)
                    {
                        if (_tasks.Count > 0)
                        {
                            task = _tasks.Dequeue();
                            if (task == null)  // empty task = signal for stop
                            {
                                return;
                            }
                        }
                    }

                    if (task != null)
                    {
                        DoTask(task);
                    }
                    else
                    {
                        // Queue is empty, waiting for a new task
                        _wh.WaitOne();
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Log(LogLevel.Warn, ex, "An abnormal exception occurs in a TaskQueue that has not been catched properly");
            }
        }
 public T InvokeInUIThread <T>(Func <T> func) => ThreadChanger.InvokeInUIThread(func);
 public void PumpMessages(int timeoutMilliseconds, ILogger logger) => ThreadChanger.PumpMessages(timeoutMilliseconds, logger, LocalDispatcher);
 public T InvokeInLocalThread <T>(Func <T> func) => ThreadChanger.InvokeInThread(func, LocalDispatcher);
 public void InvokeInUIThread(Action action) => ThreadChanger.InvokeInUIThread(action);
 public void InvokeInLocalThread(Action action) => ThreadChanger.InvokeInThread(action, LocalDispatcher);
 public ISubThreadChanger GetSubThreadChanger() => ThreadChanger.GetSubThreadChanger();
 public void EnqueueInUIThread(Action action) => ThreadChanger.EnqueueInUIThread(action);
 public void EnqueueInLocalThread(Action action) => ThreadChanger.EnqueueInThread(action, LocalDispatcher);
Пример #10
0
 public SubThreadChanger(ThreadChanger threadChanger)
 {
     ThreadChanger = threadChanger;
 }