public static void ExecuteSync(Action task)
    {
        var innerTask = new TaskFactory.InnerTask(task);

        TasksQueue.Enqueue(innerTask);
        while (!innerTask.IsCompleted)
        {
        }
        return;
    }
 private IEnumerator Work()
 {
     while (true)
     {
         TaskFactory.InnerTask task = Dequeue();
         if (task == null)
         {
             yield return(new WaitForEndOfFrame());
         }
         else
         {
             task.Task.Invoke();
             if (task.Callback != null)
             {
                 task.Callback.Invoke();
             }
             task.IsCompleted = true;
         }
     }
 }