async Task Execute(VibrateCommand cmd) { foreach (var c in cmd.Pattern) { var d = (int)c - 48; if (d > 0) { Vibrate(cmd.ImpulseLength * d); await Task.Delay(cmd.ImpulseLength *d); } else { await Task.Delay(cmd.ImpulseLength); } await Task.Delay(cmd.PauseLength); } }
void ProcessCommand(VibrateCommand cmd) { Task.Run(async() => await Execute(cmd)); }