public void Beat(WorkProgressState prog) { if (prog != null) { lblBeat.Text = prog.CurrentBeat.ToString(); if (prog.CurrentBeat == 1) { lblMeasure.Text = prog.CurrentMeasure.ToString(); } } }
private void bgwRunCounting_ProgressChanged(object sender, ProgressChangedEventArgs e) { WorkProgressState prog = (WorkProgressState)e.UserState; if (prog != null) { bbc1.Beat(prog.CurrentBeat); ucCounterDisplay.Beat(prog); if (prog.CurrentBeat == 1 && prog.CurrentMeasure == 1) { if (bgwRunTimer.IsBusy == false) { bgwRunTimer.RunWorkerAsync(); } } } }
private void bgwRunCounting_DoWork(object sender, DoWorkEventArgs e) { // Get the BackgroundWorker that raised this event. BackgroundWorker worker = sender as BackgroundWorker; while (e.Cancel == false) { if (worker.CancellationPending) { e.Cancel = true; } else { // Determine if count-in has been reached if (++TotalBeats > CountIn) { IsCountingIn = false; } // Determine if end of measure reached if (++CurrentBeat > BeatsPerMeasure) { CurrentBeat = 1; if (IsCountingIn == false) { CurrentMeasure++; } } WorkProgressState workState = new WorkProgressState { CurrentBeat = CurrentBeat, CurrentMeasure = CurrentMeasure }; worker.ReportProgress(CurrentBeat / BeatsPerMeasure, workState); Thread.Sleep(TimerValue); } } }
protected void InitWorker() { CancellationPending = false; IsBusy = true; State = WorkProgressState.Unknown; }