public ISmartTask CreateTask(ISmartTaskContent taskContent)
        {
            Type templateType = typeof(SmartTask <>);

            Type[] tParamTypes   = new Type[] { taskContent.GetType() };
            Type   smartTaskType = templateType.MakeGenericType(tParamTypes);

            object[]   constructorParam = new object[] { taskContent, null };
            ISmartTask smartTask        = (ISmartTask)Activator.CreateInstance(smartTaskType, constructorParam);

            RegisterTask(smartTask);
            //PushTask(task); 需run task.Start()才會開始
            return(smartTask);
        }
 public void PushTask(ISmartTaskContent taskContent)
 {
     PushTask(CreateTask(taskContent));
 }