Piszę krótki program, który ma imitować wciskanie dwóch kombinacji klawiszy na klawiaturze. Przerwa między każdą kombinacją musi być losowa w przedziale od 20 do 100 ms. Problem w tym, że liczba losuje się prawidłowo, wartość Interval timera się zmienia(widzę to w trybie Step Into) a odstępy między kliknięciami mimo wszystko ciągle wynoszą równo 200 milisekund. Oto kawałki kodu:
private void Wait(object sender, EventArgs e) /*obsługuje kliknięcie przycisku rozpoczynającego procedurę*/
{
RandomGenerate();
if (comboBox1.SelectedIndex == 0)
{
outputCombination1 = "^{TAB}";
}
if (comboBox1.SelectedIndex == 1)
{
outputCombination1 = " ";
}
if (comboBox2.SelectedIndex == 0)
{
outputCombination2 = "^{TAB}";
}
if (comboBox2.SelectedIndex == 1)
{
outputCombination2 = " ";
}
wait.Interval = Convert.ToInt32(numericUpDown4.Value) * 1000; /* ten timer odmierza czas między kliknięciem przez użytkownika przycisku a rozpoczęciem procedury */
wait.Tick += new EventHandler(StartTimer);
wait.Start();
}
private void RandomGenerate()
{
if (radioButton2.Checked == true)
{
Random random = new Random();
breakTime = Convert.ToInt32(random.Next(Convert.ToInt32(numericUpDown2.Value), Convert.ToInt32(numericUpDown1.Value)));
}
else if (radioButton2.Checked == false)
{
breakTime = Convert.ToInt32(numericUpDown3.Value);
}
}
void Input(object sender, EventArgs e)
{
if (counter < numericUpDown5.Value * 2)
{
if (currentCombination == 1)
{
SendKeys.Send(outputCombination1);
currentCombination = 2;
}
else if (currentCombination == 2)
{
SendKeys.Send(outputCombination2);
currentCombination = 1;
}
counter++;
RandomGenerate();
breaking.Interval = breakTime;
}
else
{
breaking.Stop();
write.Close();
write2.Close();
return;
}
}
void StartTimer(object sender, EventArgs e)
{
wait.Stop();
breaking.Interval = breakTime;
breaking.Tick += new EventHandler(Input);
breaking.Start();
}
Mimo, iż breaking.Interval za każdą kombinacją przyjmuje inną wartość losową, to poszczególne kombinacje wciskane są równo co 200 milisekund. Dlaczego?