Wywołanie metody w Timer

0

witam
Otóż mam problem, pewnie banalny ale nie wiem jak wywołać metodę Wydarzenie (nie wiem jakich argumentów podać) ?
Gdyż chcę napisać prosty programik zamykający komputer po wyznaczonym czasie

namespace ConsoleApplication20
{
    class Program
    {
            
        static void Main(string[] args)
        {
            DateTime CzasTeraz = DateTime.Now;
            
            Console.WriteLine("Aktualna data to: {0},\nZa ile czasu ma zostac wyłączony system",CzasTeraz);
            Console.WriteLine("Wprowadz liczbe godzin: ");
            double x = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("Wprowadz liczbę minut: ");
            double n = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("Wprowadz liczbę sekund: ");
            double m = Convert.ToDouble(Console.ReadLine());
            DateTime CzasDodany = DateTime.Now.AddHours(x).AddMinutes(n).AddSeconds(m);
            Console.WriteLine("Godzina wylaczenia to: {0}", CzasDodany);
            Czasomierz czasomiez = new Czasomierz(n, x, m, CzasTeraz, CzasDodany);
            czasomiez.PozostalyCzas();

        }
    }
}
class Czasomierz
{
    public double n;
    public double x;
    public double m;
    public DateTime CzasTeraz;
    public DateTime CzasDodany;

    public Czasomierz(double n,double x,double m,DateTime CzasTeraz,DateTime CzasDodany)
    {
        this.CzasDodany = CzasDodany;
        this.CzasTeraz = CzasTeraz;
        this.x = x;
        this.n = n;
        this.m = m;
    }
   
    public void PozostalyCzas()
    {
        Timer timer1 = new Timer();
        timer1.Elapsed += new ElapsedEventHandler(Wydarzenie);
        timer1.Interval = 1000;
        timer1.Enabled = true;
        do
        {
            Wydarzenie(timer1,?????);//Tutaj nie wiem jakie mają być argumenty tej metody


        } while (!(CzasDodany.Minute - DateTime.Now.Minute == 0 && CzasDodany.Hour - DateTime.Now.Hour == 0
                && CzasDodany.Second - DateTime.Now.Second == 0));
        System.Diagnostics.Process.Start("shutdown", "/s /t 0");
    }


    public void Wydarzenie(object sender, EventArgs e)
    {
        Console.WriteLine("Do wyłączenia pozostało: {0}", CzasDodany.Subtract(DateTime.Now));
    }
 
1

Timer jest aktywny i sam wywołuje metodę Wydarzenie co zadany Interval, nie wywołujesz go ręcznie. Po ustawieniu timer1.Enabled = true; timer rozpoczyna pracę. Sprawdzanie czy już trzeba wyłączyć komputer czy nie, realizuj wewnatrz metody Wydarzenie. Tutaj robisz to troche bez sensu. Najpierw Tworzysz timer który co minutę wyswietla czas, a potem tworzysz zwykłą pętlę która zawiesza cały program, jakbyś nie mógł zrobić tego w timerze.

    public void PozostalyCzas()
    {
        Timer timer1 = new Timer();
        timer1.Elapsed += new ElapsedEventHandler(Wydarzenie);
        timer1.Interval = 1000;
        timer1.Enabled = true;
    }
 
 
    public void Wydarzenie(object sender, EventArgs e)
    {
        if(CzasDodany.Minute - DateTime.Now.Minute == 0 && CzasDodany.Hour - DateTime.Now.Hour == 0 && CzasDodany.Second - DateTime.Now.Second == 0)
       {
             System.Diagnostics.Process.Start("shutdown", "/s /t 0");
       }
       else
       {
             Console.WriteLine("Do wyłączenia pozostało: {0}", CzasDodany.Subtract(DateTime.Now));
       }
    }
0

dzięki właśnie o to mi chodziło :)
a jeszcze mam pytanie jak zrobić żeby, czyszczenie konsoli nie było kompletne tzn. żeby czyściło tylko czas który pozostał, a nie całą konsolę bo gdy zrobię tak:

  if(CzasDodany.Minute - DateTime.Now.Minute == 0 && CzasDodany.Hour - DateTime.Now.Hour == 0 && CzasDodany.Second - DateTime.Now.Second == 0)
       {
             System.Diagnostics.Process.Start("shutdown", "/s /t 0");
       }
       else
       {
             Console.Clear();
             Console.WriteLine("Do wyłączenia pozostało: {0}", CzasDodany.Subtract(DateTime.Now));
       }

wyczyści mi całą konsolę.
A i czy istnieje sposób żeby nie wyświetlało mi milisekund tylko kończyło na sekundach?

1 użytkowników online, w tym zalogowanych: 0, gości: 1