1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
|
public partial class TestForm : Form
{
Waiter waiter1;
int nbTests = 5;
int currentTest = 0;
Boolean runningTest;
Boolean runningSerie;
DateTime startTime;
DateTime endTime;
public TestForm()
{
InitializeComponent();
}
private void Start_Click(object sender, EventArgs e)
{
StartTestSerie();
}
private void Cancel_Click(object sender, EventArgs e)
{
CancelTestSerie();
}
private void StartTestSerie()
{
currentTest = 0;
Start.Enabled = false;
Cancel.Enabled = true;
runningSerie = true;
KeyDown -= this.Form1_KeyDown;
KeyDown += this.Form1_KeyDown;
RunNextTest();
}
private void RunNextTest()
{
if (!runningSerie)
return;
currentTest++;
if (currentTest > nbTests) {
CancelTestSerie();
return;
}
LabelNumber.Text = currentTest.ToString();
LabelNumber.Refresh();
RunUniqueTest();
}
private void CancelTestSerie()
{
Start.Enabled = true;
Cancel.Enabled = false;
runningSerie = false;
backgroundWorker1.RunWorkerCompleted -= backgroundWorker1_RunWorkerCompleted;
KeyDown -= new System.Windows.Forms.KeyEventHandler(Form1_KeyDown);
}
private void RunUniqueTest()
{
waiter1 = new Waiter();
backgroundWorker1 = new System.ComponentModel.BackgroundWorker();
backgroundWorker1.RunWorkerCompleted += this.backgroundWorker1_RunWorkerCompleted;
this.backgroundWorker1.DoWork += this.backgroundWorker1_DoWork;
Random rnd = new Random(unchecked((int)(DateTime.Now.Ticks)));
int waitTime = rnd.Next(1000,6000);
Thread.Sleep(waitTime);
SystemSounds.Beep.Play();
startTime = DateTime.Now;
runningTest = true;
// Start the asynchronous operation.
backgroundWorker1.RunWorkerAsync(waiter1);
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
// This event handler is where the actual work is done.
// This method runs on the background thread.
// Get the BackgroundWorker object that raised this event.
System.ComponentModel.BackgroundWorker bgWorker;
bgWorker = (System.ComponentModel.BackgroundWorker)sender;
// Get the Worker object and call the main method.
Waiter w = (Waiter)e.Argument;
w.Run(bgWorker, e, 5000);
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (!runningTest)
return;
// This event handler is called when the background thread finishes.
// This method runs on the main thread.
MessageBox.Show("timeout");
CancelTestSerie();
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (!runningSerie || !runningTest)
return;
endTime = DateTime.Now;
runningTest = false;
backgroundWorker1.RunWorkerCompleted -= backgroundWorker1_RunWorkerCompleted;
labelLastResultValue.Text =(endTime-startTime).TotalMilliseconds.ToString() + " msec";
labelLastResultValue.Refresh();
RunNextTest();
} |
Partager