Actions can now have children.
     4 using System.Runtime.Serialization;
 
     5 using System.Threading;
 
     6 using System.Threading.Tasks;
 
    13     [AttributeObject(Id = "Thread.Sleep", Name = "Sleep", Description = "Have the current thread sleep for the specified amount of milliseconds.")]
 
    14     public class ActionSleep : Action
 
    17         [AttributeObjectProperty
 
    19                 Id = "Thread.Sleep.Timeout",
 
    20                 Name = "Timeout (ms)",
 
    21                 Description = "Specifies the number of milliseconds this action will sleep for.",
 
    27         public int TimeoutInMilliseconds { get; set; }
 
    31             TimeoutInMilliseconds = 1000;
 
    35         public ActionSleep(int aMillisecondsTimeout)
 
    37             TimeoutInMilliseconds = aMillisecondsTimeout;
 
    40         public override string BriefBase()
 
    42             return AttributeName + " for " + TimeoutInMilliseconds + " ms";
 
    46         protected override async Task DoExecute()
 
    48             await Task.Delay(TimeoutInMilliseconds);