Это образец моего кода. Я хочу иметь 3-секундную задержку перед тем, как выполнить следующий случай (отобразить иллюстрацию). Но когда я попытался использовать таймер/секундомер, 3-секундная задержка будет только на 1-м случае, а case2 будет выполняться одновременно с case1 (без задержки).Как вы делаете паузу между случаями в операторах switch? C#. 3-секундная задержка перед выполнением следующего случая
private void button1_Click(object sender, EventArgs e)
{
string input = (input1.Text).ToString();
char[] letters = input.ToCharArray();
int stringlength = letters.Length;
int length = stringlength - 1;
int state = 1;
int position = 0;
string validation = " ";
switch (state)
{
case 1:
//insert timer here
if (letters[position] == 'a')
{
pictureBox2.Visible = true;
validation = "Invalid";
label1.Text = validation;
break;
}
else if (letters[position] == 'b')
{
if (position == length)
{
validation = "Invalid";
label1.Text = validation;
break;
}
pictureBox2.Visible = true;
position = position + 1;
goto case 2;
}
break;
case 2:
//Insert Timer here
if (letters[position] == 'a')
{
pictureBox3.Visible = true;
if (position == length)
{
validation = "Invalid because it does not end at final state";
label1.Text = validation;
break;
}
position = position + 1;
goto case 3;
}
else if (letters[position] == 'b')
{
if (position == length)
{
validation = "Invalid";
label1.Text = validation;
break;
}
position = position + 1;
goto case 4;
}
break;
}
}
Кстати, я не могу использовать Task.Delay
или async/await
потому что я использую 4.0 .NET.
Не используйте 'goto', пожалуйста. –
Помимо «goto» в коммутационном футляре, почему бы вы поместить паузу (тогда таймер) в каждом случае? «Состояние» уже оценивается в 'switch', и бесполезно ставить таймер в каждом случае, поэтому, возможно, вы поставили его перед оператором' switch'. –