Появление строки по истечении времени

202
29 декабря 2018, 17:50
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());
Answer 1

Для этой цели можно использовать какой-либо таймер.

Добавьте в код поле:

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();

Это освободит ресурсы, занятые таймером. Правило хорошего тона: нужно почистить за собой.

READ ALSO
RichTextBox и текст из базы данных

RichTextBox и текст из базы данных

Как реализовать сохранение rtf текста в базу данных и выгрузку его же из бд при помощи RichTextBox или другого элементаВ проекте использую wpf, mvvm

176
Пользовательский textbox

Пользовательский textbox

Код ниже (c# vs2010 winforms net40) определяет пользовательский текстбокс со свойствами "только для чтения" и "скрытым курсором"

237
Как работать с мултитач на Unity?

Как работать с мултитач на Unity?

Например так: нажал на левую сторону экрана - вывелось "Hi", а на правую - "Bye"Когда обе нажал - "Good"

191
Получение значения Dictionary<> по индексу

Получение значения Dictionary<> по индексу

Как получить значение Dictionary<> по индексу

216