Создавать temporizador в C#

Я создаю программу в C#, что помог мне помнить, когда брать мою медицину. Для этого он спрашивает у меня, взял ли я плитку, и если да переначальная программа 48 часов спустя.

На данный момент я создал timer 2 секунд, чтобы подтверждать если funcioma, но я не могу заставить проводить это время.

Я надеюсь, что они могут помогать мне, на данный момент мой код - следующий:

using System;
using System.Timers;

namespace ConsoleApp1
{
    class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("¿Te has tomado la pastilla?");
        string x = Console.ReadLine();

        if (x == "Si")
        {
            Console.WriteLine("Muy Bien");
            Timer timer = new Timer(172800000);//Creamos un temporizador de 48 horas

            Console.WriteLine("Perfect");
        }


    }
 }
}
0
задан 21.03.2019, 13:07
2 ответа

Чтобы использовать Timer в одной aplicaciГіn консоли tenes, чем иметь в виду главным образом две вещи.

  1. ты Должен подписывать Timer в событие Elapsed (выполненное событие каждый раз, когда timer выполнил Ваш интервал) , в течение этот реализует ее acciГіn, что ты стремишься того, чтобы выполнили через некое время
  2. Ее aplicaciГіn, должно оставаться в бесконечном цикле, для, надеяться таким образом на то, что себе не производит событие Elapsed , по-другому, она aplicaciГіn finalizarГ - в Ваш трэд ejecuciГіn никогда produciГ©ndose событие.

оставил Тебе один pequeГ±o пример Ваш aplicaciГіn.

static void Main(string[] args)
{
   //Creo un timer con un intervalo de 2000 milisegundos.
   Timer t = new Timer(2000);
   //Suscribo el timer al evento elapsed. 
   t.Elapsed += EventoElapsed;
   //Lo inicio.
   t.Start();
   //Realizo un bucle infinito
   while (true);
}

/// <summary>
/// Evento producido en cada tick del Timer (cada 2000 milisegundos)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private static void EventoElapsed(object sender, ElapsedEventArgs e)
{
    Console.WriteLine("¿Tomaste la pastilla?");
    //Manejas la respuesta a tu gusto
}

Однако, поскольку они сказали той в комментариях, лучшая одна soluciГіn, serГ - использования Запрограммированных Заданий, оставил тебе ответ , где он объясняется, как его делает это

0
ответ дан 02.12.2019, 05:21

Ты должен инициализировать Timer с Start и Y заблаговременно присоединять событие Elapsed для каждого конца цикла timer. AdemГЎs ты должен поддерживать "живую" программу, из-за чего ты должен использовать бесконечный цикл, чтобы поддерживать в ejecuciГіn программу.

для следующей программы, выполнил Elapsed каждые 5 секунд.

class Program
{
    static void Main(string[] args)
    {


        Timer timer = new Timer(5000);
        timer.AutoReset = true;

        timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_elapsed);

        timer.Start();
        while (true) ;

    }

    private static void timer_elapsed(object sender, System.Timers.ElapsedEventArgs e)
    {
        Console.WriteLine("¿Te has tomado la pastilla?");
        string x = Console.ReadLine();


        if (x == "Si")
        {
            Console.WriteLine("Muy Bien");
            Console.WriteLine("Perfect");
        }
        else
        {
            Console.WriteLine("Deberias tomar la pastilla");
            Console.WriteLine("Es solo un consejo");
        }
    }




}
1
ответ дан 02.12.2019, 05:21