class Program
{
static void Main(string[] args)
{
int y = 0;
while (y == 0)
{
Random RandNum = new Random();
int a = RandNum.Next(10, 101);
int b = RandNum.Next(2, 10);
int x = a * b;
string l = x.ToString();
try
{
Console.WriteLine("How many will be {0} * {1}:", a, b);
int num = Convert.ToInt32(Console.ReadLine());
if (num == x)
{
Console.WriteLine("Great work, get it some again?");
string answer = Convert.ToString(Console.ReadLine());
if (answer == "Yes" || answer == "yes")
{
}
else
{
Environment.Exit(0);
}
}
else
{
Console.WriteLine("No, it wrong");
Console.ReadKey(true);
}
}
catch
{
Console.WriteLine("Enter number...");
}
}
}
}
Мне нужно чтобы в этом моменте, по истечении, к примеру, 5 секунд появлялось сообщение «Need a clue?»
Console.WriteLine("How many will be {0} * {1}:", a, b);
int num = Convert.ToInt32(Console.ReadLine());
Для этой цели можно использовать какой-либо таймер.
Добавьте в код поле:
static System.Threading.Timer timer = new Timer(
n => Console.WriteLine("Need a clue?"),
null, Timeout.Infinite, Timeout.Infinite);
Здесь лямбдой задан колбек (функция обратного вызова), который будет вызываться периодически. Первоначально заданы параметры Infinite, потому что таймер пока не должен работать.
Далее в коде в нужном месте включаем таймер, задавая параметры, через какое время он сработает первый раз и через какие интервалы времени будет срабатывать потом.
Console.WriteLine("How many will be {0} * {1}:", a, b);
timer.Change(5000, 5000);
int num = Convert.ToInt32(Console.ReadLine());
timer.Change(Timeout.Infinite, Timeout.Infinite);
После получения ответа от пользователя снова меняем параметры таймера на Infinite - он перестанет срабатывать.
В конце вашего кода (перед Environment.Exit) напишите:
timer.Dispose();
Это освободит ресурсы, занятые таймером. Правило хорошего тона: нужно почистить за собой.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей