private async Task intervalOrFixPoint(StroopProgram program, CancellationToken token) { try { int intervalTime = 400; // minimal rnd interval time if (program.IntervalTimeRandom && program.IntervalTime > 400) // if rnd interval active, it will be a value between 400 and the defined interval time { Random random = new Random(); intervalTime = random.Next(400, program.IntervalTime); } else { intervalTime = program.IntervalTime; } if (program.FixPoint == "+" || program.FixPoint == "o") { ExpositionController.makingFixPoint(program.FixPoint, program.FixPointColor, this); } await Task.Delay(intervalTime); } catch (Exception ex) { MessageBox.Show(ex.Message); Close(); } }
private int waitIntervalTime(bool isWaitTimeRandom, int waitTime) { int intervalTimeRandom = 200; // minimal rnd interval time intervalCancelled = false; // if random interval active, it will be a value between 200 and the defined interval time if (isWaitTimeRandom && waitTime > 400) { Random random = new Random(); intervalTimeRandom = random.Next(400, waitTime); } else { intervalTimeRandom = waitTime; } Stopwatch intervalStopWatch = new Stopwatch(); intervalStopWatch.Start(); long interval = intervalTimeRandom; if (Program.hasFixPoint(executingTest.ProgramInUse.FixPoint)) { interval = intervalTimeRandom - fixPointTime; } while (intervalStopWatch.ElapsedMilliseconds < interval) { if (expositionBW.CancellationPending) { intervalCancelled = true; break; } /* just wait for interval time to be finished */ } ExpositionController.makingFixPoint(executingTest.ProgramInUse.FixPoint, executingTest.ProgramInUse.FixPointColor, this); if (Program.hasFixPoint(executingTest.ProgramInUse.FixPoint)) { while (intervalStopWatch.ElapsedMilliseconds < intervalTimeRandom) { if (expositionBW.CancellationPending) { intervalCancelled = true; break; } /* just wait for interval time to be finished */ } } intervalShouldBe = intervalTimeRandom; intervalStopWatch.Stop(); int elapsedTime = (int)intervalStopWatch.ElapsedMilliseconds; return(elapsedTime); }
private void expositionBW_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { if (!cancelExposition) { // cleaning screen if (ActiveForm != null) { this.CreateGraphics().Clear(ActiveForm.BackColor); } // if expositions type uses any kind of control to show stimulus such as a word label or image picture box if (currentControl != null) { // if current control is enabled it means that just showed a stimulus if (currentControl.Enabled) { // signaling to interval background worker that exposing must end and control must be removed from screen exposing = false; intervalBW.ReportProgress(50, currentControl); } } ExpositionController.makingFixPoint(executingTest.ProgramInUse.FixPoint, executingTest.ProgramInUse.FixPointColor, this); } else { /*do nothing*/ } if ((e.Cancelled == true) && !intervalCancelled) { /* user clicked after stimulus is shown*/ executingTest.writeLineOutput(intervalElapsedTime, intervalShouldBe, hitStopWatch.ElapsedMilliseconds, currentExposition + 1, expositionAccumulative, currentLists, currentStimuli, currentPositionOutput, currentBeep, currentColor); } else if ((e.Cancelled == true) && intervalCancelled) { /* user clicked before stimulus is shown*/ executingTest.writeLineOutput(intervalElapsedTime, intervalShouldBe, intervalElapsedTime - intervalShouldBe, currentExposition + 1, expositionAccumulative, currentLists, currentStimuli, currentPositionOutput, currentBeep, currentColor); } else { /* user missed stimulus */ executingTest.CurrentResponse = "NA"; executingTest.writeLineOutput(intervalElapsedTime, intervalShouldBe, 0, currentExposition + 1, expositionAccumulative, currentLists, currentStimuli, currentPositionOutput, currentBeep, currentColor); hitStopWatch.Stop(); } expositionBW.Dispose(); }
private void intervalBW_DoWork(object sender, DoWorkEventArgs e) { executingTest.InitialDate = DateTime.Now; accumulativeStopWatch.Start(); for (int counter = 0; counter < executingTest.ProgramInUse.NumExpositions && !cancelExposition; counter++) { ExpositionController.makingFixPoint(executingTest.ProgramInUse.FixPoint, executingTest.ProgramInUse.FixPointColor, this); currentExposition = counter; //preparing execution expositionBackground(); while (expositionBW.IsBusy) { /* wait for exposition to be finished */ } Thread.Sleep(1); } }