private async Task _tf_DoWork(Object sender, DoWorkEventArgs e) { Classes.HT16K33AnimatorAction action = (Classes.HT16K33AnimatorAction)e.Argument; try { do { foreach (Classes.HT16K33AnimatorActionFrame frame in action.Frames) { if (!_ezb.IsConnected) { return; } _ht.UpdateLEDs(frame.Matrix); await Task.Delay(frame.PauseTimeMS); if (_tf.CancellationPending) { return; } } } while (action.Repeats && !_tf.CancellationPending); } catch (Exception ex) { _ezb.Log(false, "Error in thread worker of HT16K33 Animator: {0}", ex); } }
/// <summary> /// Execute the Action /// </summary> public void ExecAction(Classes.HT16K33AnimatorAction action) { if (OnStartAction != null) { OnStartAction(action); } startWorker(action); }
public string AddAction(HT16K33AnimatorAction action) { List <HT16K33AnimatorAction> actions = new List <HT16K33AnimatorAction>(Actions); actions.Add(action); Actions = actions.ToArray(); return(action.GUID); }
private void startWorker(Classes.HT16K33AnimatorAction action) { _tf.RunWorkerAsync(action); }