Announcement

Collapse
No announcement yet.

Methode alle x sekunden ausführen?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Methode alle x sekunden ausführen?

    Ich möchte ein kleines Monitoring Tool schreiben.

    Darin soll ein PC angepingt werden und entsprechend ein LabelText verändet werden.
    Der Ping soll zB alle 10 Sekunden erfolgen.
    Eine eifnache Art von 'sleep' würde mir eigentlich schon reichen, jedoch mit Threat.Sleep firert der ganze PC ein

    Hier ein Codeauszug:

    Code:
     public Form1()
            {
                InitializeComponent();
    
                TimeSpan dueTime = new TimeSpan(0, 0, 0); // start right away
                TimeSpan period = new TimeSpan(0, 0, 10); // run every 10 sec.
                // now the timer
                System.Threading.Timer timer = new System.Threading.Timer(getHostStatus, null, dueTime, period);
            }
    Code:
     public void getHostStatus(object stateInfo)
            {
                Boolean pingStatus = pingHost("192.168.1.10");
                if (pingStatus) ShowStatus.Text = "PC ON!";
                else ShowStatus.Text = "PC off!";
                   
            }
    Nun erhalte ich leider als Fehlermeldung:
    Ungültiger threadübergreifender Vorgang

    Wie lässt sich
    Code:
     ShowStatus.Text = "Aero off!";
    nun verändern??
    Habe zuvor noch nicht mit Threads programmiert.

    Vielen Dank!
    Zuletzt editiert von tatoosh; 06.09.2009, 12:28.

  • #2
    habe es wohl zu kompliziert gemacht.
    Nun habe ich es so gelöst:

    1. Timer aus Toolbox hinzugefügt
    Code:
     private void timer1_Tick(object sender, EventArgs e)
            {
                 getHostStatus();
            }
    und diesen über die Form1() gestartet .... jetzt funktionierte s endlich:
    Code:
     public Form1()
            {
                InitializeComponent();
                timer1.Interval = 1000;
                timer1.Start();
            }

    Comment


    • #3
      Hallo tatoosh,

      als Anmerkung gibt es auch noch Timer in Namespaces System.Threading und System.Timers.


      mfG Gü
      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

      Comment


      • #4
        und bei Threadübergreifendemprogrammieren hättest du mit Invokes arbeiten müssen
        Unsere Jugend ist unerträglich, unverantwortlich und entsetzlich anzusehen! - Aristoteles

        Comment


        • #5
          Okay danke euch beiden für die Hinweise.
          Nun weiss ich wo ich ansetzten kann und ich werde mich über Invokes und die anderen Timer informieren.

          Comment

          Working...
          X