как установить ограниченное время для моего консольного приложения - PullRequest
0 голосов
/ 15 марта 2019

Я думал, как установить ограниченный период для моего консольного приложения.

Например, я хочу дать пользователям всего 10 секунд, чтобы выбрать или сделать что-то, когда они только что вошли. Если время превышает 10 секунд, то пользователь должен получить предупреждение.

Вот мой код. Я пытался сначала преобразовать его в строку, а затем в int, но что-то не так ...

using System;
using System.Threading;
namespace exercise
{
    class Program
        static void Main(string[] args)
        {
            Timer t = new Timer(TimerCallback, null, 0, 2000);
            // Wait for the user to hit <Enter>
            Console.ReadLine();
        }

        private static void TimerCallback(Object o)
        {
            bool loop = true;                                 // Console.WriteLine("{0:h:mm:ss.fff}.\n", DateTime.Now); ---->     Creating timer
            string b = DateTime.Now.ToString();
            // Display the date/time when this method got called.
            Console.WriteLine("In TimerCallback: " + b);
            int c = Convert.ToInt32(b);
            // Force a garbage collection to occur for this demo.
            if (c == 10000)
            {
                Console.WriteLine(" your time is runnig out , hurry up brow");
            }
            GC.Collect();
        }
}

1 Ответ

0 голосов
/ 22 марта 2019

Вы можете использовать DateTime.ParseExact («2009-05-08 14: 40: 52,531», «гггг-ММ-дд ЧЧ: мм: сс, ффф» для передачи строки в дату и время, но вы будете анализировать дату и время, а не количество прошедшего времени.

Вы можете сохранить количество вызовов в статическом поле и таким образом проверить 10 секунд.

class Program
    {
        private static int timerCounter = 1;
        static void Main(string[] args)
        {
            Timer t = new Timer(TimerCallback, null, 0, 2000);
            // Wait for the user to hit <Enter>
            Console.ReadLine();
        }

        private static void TimerCallback(Object o)
        {
            bool loop = true; // Console.WriteLine("{0:h:mm:ss.fff}.\n", DateTime.Now); ---->     Creating timer
            string b = DateTime.Now.ToString();
            // Display the date/time when this method got called.
            Console.WriteLine("In TimerCallback: " + b);

            // timer callback is every 2 seconds, so every 5th call is 10 sec
            if (timerCounter % 5 == 0)
            {
                timerCounter = 1;
                Console.WriteLine(" your time is runnig out , hurry up brow");
            }

            timerCounter++;
            GC.Collect();
        }
    }


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...