コード例 #1
0
        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);
            }
        }
コード例 #2
0
        /// <summary>
        /// Execute the Action
        /// </summary>
        public void ExecAction(Classes.HT16K33AnimatorAction action)
        {
            if (OnStartAction != null)
            {
                OnStartAction(action);
            }

            startWorker(action);
        }
コード例 #3
0
        public string AddAction(HT16K33AnimatorAction action)
        {
            List <HT16K33AnimatorAction> actions = new List <HT16K33AnimatorAction>(Actions);

            actions.Add(action);

            Actions = actions.ToArray();

            return(action.GUID);
        }
コード例 #4
0
 private void startWorker(Classes.HT16K33AnimatorAction action)
 {
     _tf.RunWorkerAsync(action);
 }