private void ExecuteAsyncOnThreadPool()
        {
            ThreadPool.QueueUserWorkItem(state =>
            {
                m_currentExecutionMode = AsynchronousExecutionMode.Short;

                if (ExecuteAction())
                {
                    ExecuteActionAsync();
                }
            });
        }
        private void ExecuteAsyncOnDedicatedThread()
        {
            Thread t = new Thread(() =>
            {
                m_currentExecutionMode = AsynchronousExecutionMode.Long;

                while (ExecuteAction())
                {
                    if (AsynchronousExecutionMode != AsynchronousExecutionMode.Long)
                    {
                        ExecuteActionAsync();
                        break;
                    }
                }
            });

            t.IsBackground = true;
            t.Start();
        }