EAR: Actions now support multiple iterations.
5 using System.Collections.Generic;
6 using System.Diagnostics;
7 using System.Runtime.Serialization;
8 using System.Threading;
9 using System.Threading.Tasks;
11 namespace SharpLib.Ear
14 public abstract class Action: Object
17 [AttributeObjectProperty
19 Id = "Action.Iterations",
21 Description = "Specifies the number of time this action should execute.",
27 public int Iterations { get; set; } = 1;
34 get { return Iterations > 0; }
37 protected abstract Task DoExecute();
40 /// Allows testing from generic edit dialog.
44 Trace.WriteLine("Action test");
49 /// Execute our action N times.
51 /// <returns></returns>
52 public async Task Execute()
56 Trace.WriteLine("EAR: Action.Execute: WARNING: Action invalid, aborting execution: " + Brief());
62 Trace.WriteLine("EAR: Action.Execute: Action disabled: " + Brief());
66 for (int i = Iterations; i > 0; i--)
68 Trace.WriteLine($"EAR: Action.Execute: [{Iterations - i + 1}/{Iterations}] - {BriefBase()}");
74 public virtual string BriefBase()
80 /// Dynamic object description.
82 /// <returns></returns>
83 public sealed override string Brief()
85 return Iterations > 1 ? $"{Iterations} x " + BriefBase():BriefBase();