Avatar billede majbom Novice
14. august 2006 - 13:12 Der er 15 kommentarer og
1 løsning

gøre noget på bestemt tidspunkt

hejsa..

nogen der kan hjælpe med at få mit program til at gøre ting på bestemt tidspunkt?

f.eks. kl 12:00 skal programmet sige "Klokken er tolv!"

på forhånd tak
Avatar billede arne_v Ekspert
14. august 2006 - 13:15 #1
Prøv og kig på en af Timer klasserne
Avatar billede majbom Novice
14. august 2006 - 13:25 #2
synes ikke umiddelbart at jeg kan finde på andet end at den gør noget når den "tick'er"...
Avatar billede Slettet bruger
14. august 2006 - 13:28 #3
Du kan vel bare lave noget i retning af at checke hvad tiden er nu, med noget du har stående i en textbox fx.

private string CheckTid()
{
    DateTime Date = new DateTime();
    return Date.Hour + ":" + Date.Minute;
}
Avatar billede Slettet bruger
14. august 2006 - 13:29 #4
Denne vil jo, når klokken er 12:00 return 12:00
Avatar billede majbom Novice
14. august 2006 - 13:32 #5
så mener du at jeg skal sætte en timer til at køre "din" methode?
Avatar billede Syska Mester
14. august 2006 - 13:32 #6
Ville det ikke være nemmest at finde ud af hvad klokken er, og så hvor mange sekunder der er til klokken bliver 12:00,og så oprette en timer der vente det antal sekunder, og så kalder en funktion.....

hvis man hele tiden skal konotrollere hvad tiden er, skal man jo ramme præcis, og det vil tage meget meget mere CPU kræft.........

// ouT
Avatar billede Slettet bruger
14. august 2006 - 13:46 #7
Tjoo

Det kræver ingen cpu-tid at lave sådan noget her:

using System.Threading;


Thread TimeThread = new Thread(new ThreadStart(TimeCheckerThread));
TimeThread.Start();


private void TimeCheckerThread()
{
    while (true)
    {
          if ("12:00" == CheckTid())
          {
              MessageBox.Show("Udfør job");
              break; //Lukk loop
          }

          Thread.Sleep(500);
    }
}

private string CheckTid()
{
    DateTime Date = new DateTime();
    return Date.Hour + ":" + Date.Minute;
}
Avatar billede majbom Novice
14. august 2006 - 14:08 #8
okay tak, jeg prøver at kigge på det..
Avatar billede majbom Novice
14. august 2006 - 14:12 #9
er ikke så meget inde i tråde (har aldrig rigtig rodet med det)

kører private void TimeCheckerThread() hvert halve sekund?
Avatar billede Slettet bruger
14. august 2006 - 14:35 #10
ja det gør den.. indtil tiden er == checkTid(), så lukker tråden (while lykken slutter)

Hvis du skal lukke dit program, kører tråden stadig..

Så i det event der lukker dit program (form_closing) smid Environment.Exit(0); ind, det lukker alle tråde for dit program
Avatar billede arne_v Ekspert
14. august 2006 - 15:18 #11
Time klassen kan godt saettes til at goere noget en gang paa et bestemt tidspunkt.

Eksempel:

using System;
using System.Threading;

namespace E
{
    public class MainClass
    {
        public static void Main(string[] args)
        {
            Timer t = new Timer(new TimerCallback(DoIt), "foobar", (int)(DateTime.Parse("9:16")-DateTime.Now).TotalMilliseconds, Timeout.Infinite);
            Thread.Sleep(120000);
        }
        public static void DoIt(Object o)
        {
            Console.WriteLine("Processing " + o);
        }
    }
}
Avatar billede majbom Novice
14. august 2006 - 15:20 #12
det virker til dels, men jeg får tiden ud i 12timer i stedet for 24timer

min koden ser således ud nu:

private void TimeCheckerThread()
{
  while (true)
  {
      if ("03:11" == CheckTid())
      {
        MessageBox.Show("Udfør job");
        break; //Luk loop
      }

  Thread.Sleep(500);
  }
}

private string CheckTid()
{
  dt = DateTime.Now;
  return dt.ToString("hh:mm");
}
Avatar billede Syska Mester
14. august 2006 - 16:45 #13
wb-freekill: Kan godt ske det ikke tager meget CPU kræft .... men nu regnede jeg også med at der skulle køre andre ting og ikke kun en ting som skal tjekke tiden.... ellers ville det nok være nemmere bare at smide den ind i en windows scheduled tasks .....

// ouT
Avatar billede majbom Novice
14. august 2006 - 16:56 #14
det virker fint, og jeg kan jo godt sætte sleep-tiden op til 30000ms da jeg kun skal have på minuttet og ikke på sekundet...

nogen der kan løse 12timers problemet?
Avatar billede majbom Novice
15. august 2006 - 08:24 #15
jeg har wb-freekills eksempel, så hvis du lige smider et svar så får du pointene

jeg fandt en løsning med 24timers problemet (hh = 12t - HH = 24t)
Avatar billede Slettet bruger
15. august 2006 - 10:51 #16
svar :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester