public async void PostTask(MTask task)         //用async声明的函数,调用的时候会立即创建线程。
        {
            lock (_taskList)
                if (task == null || _taskList.Contains(task))
                {
                    return;
                }

            while (true)
            {
                if (_taskList.Count > 500)                 //允许队列中最多放置多少个任务。
                {
                    _taskWaiter.Set();
                    await Task.Delay(400);
                }
                else
                {
                    lock (_taskList) _taskList.Enqueue(task);
                    Env.Logger.Log($"Enqueue Task{task} runnerCount={_runnerCount}");
                    _taskWaiter.Set();
                    //如果成功添加,则退出。
                    break;
                }
            }
        }
        public void PostTask(Func <Task> task, Func <bool> isValid = null, Func <string> toStringImpl = null)
        {
            MTask mtask = new MTask
            {
                ActualTask   = task,
                IsValidImpl  = isValid,
                ToStringImpl = toStringImpl
            };

            PostTask(mtask);
        }