Announcement

Collapse
No announcement yet.

Wert aktualisieren

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

  • Wert aktualisieren

    Hallo zusammen!

    Ich hab wiedermal ne Frage und hoffe, wie immer, Hilfe von euch zu bekommen.
    Ich möchte einen Wert, der als String an eine TextBox übergeben wird, aktualisieren. Der Wert ist die CPU Frequenz, die Methode dazu:

    ///Gibt die CPU Frequenz in Mhz aus
    publicstaticuint CpuSpeed()
    {
    ManagementObject Mo = newManagementObject("Win32_Processor.DeviceID='CPU0'");
    uint sp = (uint)(Mo["CurrentClockSpeed"]);
    Mo.Dispose();
    return sp;
    }

    Diese Methode ist in einer eigenen Klasse (mit mehreren anderen) zusammengefasst. Der Wert dazu wird im Button1_Click Körper (ist das der EreignisHandler?) über einen Methoden-Aufruf an die TextBox übergeben.
    Wie kann ich diesen Wert jetzt aktualisieren, und die Abstände definieren?

  • #2
    Hi,

    verwende einen Timer der die Abfrage in einem eingestellten Intervall durchführt.

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

    Comment


    • #3
      Und wie genau geht das von statten? Muß ich die Methode zum auslesen der Frequenz in den Körper des timers schreiben? Oder von dort aus die Methode aufrufen?

      Comment


      • #4
        Hi,

        alles was wiederholt stattfinden soll steht im Körper des Timer-Tick Ereignisses.

        Beispiel:
        Code:
        using System;
        using System.Windows.Forms;
        
        namespace WindowsFormsApplication1
        {
        	public partial class Form1 : Form
        	{
        		private Random _random = new Random();
        
        		public Form1()
        		{
        			InitializeComponent();
        		}
        
        		private void button1_Click(object sender, EventArgs e)
        		{
        			// Intervall setzten [ms]:
        			timer1.Interval = 100;
        
        			// Timer aktivieren:
        			timer1.Enabled = true;
        		}
        
        		private void button2_Click(object sender, EventArgs e)
        		{
        			// Timer deaktivieren:
        			timer1.Enabled = false;
        		}
        
        		private void timer1_Tick(object sender, EventArgs e)
        		{
        			textBox1.Text = _random.Next().ToString();
        		}
        	}
        }
        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment


        • #5
          Selbst probieren macht schlau! Solche Nachfragen lassen mich immer zweifeln, ob genügend Eigeninteresse vorhanden ist.

          Wie ein Timer einzubauen ist, steht in der SDK-Doku/MSDN oder auch im OpenBook Visual C# Kap.14.16.

          Ein bestimmter Code (hier: die Abfrage der CPU) kann immer in eine Methode eingebaut werden oder in eine eigene Methode mit dem Aufruf aus einer anderen Methode heraus; das zweite Verfahren ist meistens übersichtlicher und vor allem dann zu empfehlen, wenn ein und derselbe Code von mehreren Stellen ausgeführt werden soll. Ein EventHandler (hier: TimerTick) ist auch nichts anderes als eine spezielle Methode. Das gehört wirklich zum Basiswissen unter NET.

          Konkret: Richte Dich nach dem Beispiel unter Timer.Tick-Ereignis. Rufe von dort aus Deine CpuSpeed-Methode auf.

          Jürgen

          /Edit
          Da war gfoidl mit seinem Beispiel schneller. Ich halte meine Hinweise weiterhin für wichtig.

          Comment


          • #6
            Jürgens Hinweise sind auch richtig und wichtig.

            Ein gewissen Maß an autodidaktischem Lernen muss schon dabei sein. So kann der Blick auch schnell über den "Tellerrand" hinausgehen und weitere bisher unbekannte Möglichkeiten entdeckt werden (beim Blick zB in die MSDN).

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

            Comment


            • #7
              Ja da geb ich euch natürlich recht, aber für manche ist es leichter zu verstehen, wenn man es an einem konkreten Beispiel erklärt bekommt. Ich hab ja natürlich selbst probiert nur leider hats nicht geklappt, deswegen frag ich halt jemand der sich auskennt. Da ich privat aber niemanden kenne, hoffe ich halt auf freundliche Hilfe hier im Forum....

              Herzlichen Danke für die Hilfe!

              Comment


              • #8
                Es wird dir auch weiterhin geholfen werden. Beispiele werden auch zur Verfügung gestellt werden. Nur bei Trivialitäten zuerst bitte in der Hilfe gucken.

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

                Comment


                • #9
                  OK! Es ist ja nicht so dass ich die MSDN noch nie gesehen hab...
                  Aber zu Deinem Beispiel, Random kann ich aber nicht verwenden in meinem Fall, seh ich das richig? Sonst bekomm ich ja ständig wechselnde zufalls Zahlen...

                  Comment


                  • #10
                    Random war nur ein Beispiel. Stattdessen rufst du die Methode zur Ermittlung der CPU-Frequenz auf - das wolltest du doch?!

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

                    Comment


                    • #11
                      Oh man ich trau mich schon fast nicht mehr zu fragen... wenn ich hier:
                      private void timer1_Tick(object sender, EventArgs e)
                      {
                      textBox1.Text = _random.Next().ToString();
                      }
                      statt randow versuche die Methode CpuSpeed aufzurufen, funktioniert aber das Next nicht...
                      Ich checks grad gar nicht...

                      Comment


                      • #12
                        Das .Next() gehört noch zur Random-Klasse.

                        Bei dir:
                        Code:
                        private void timer1_Tick(object sender, EventArgs e)
                        {
                            textBox1.Text = CpuSpeed().ToString();
                        }
                        Tipp:
                        Wenn du in der IDE mit der Maus auf eine Methode fährst erscheint eine QuickInfo was diese Methode ist. So hättest du (unter vielen andern Möglichkeiten) sehen können was .Next() ist.

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

                        Comment


                        • #13
                          Ich hab das so auch versucht, nur wird so der Wert auch nicht aktualisiert.
                          Sobald ich die Anwendung starte, steht die Frequenz in der Textbox und die Steuerelemnte funktionieren nicht mehr. Ich muss die Anwendung dann auch mit dem TaskManager beenden
                          Zuletzt editiert von brown78; 17.09.2008, 20:36.

                          Comment


                          • #14
                            Im Anhang ein Projekt in dem es funktioniert. Ändere den Code auf deine Bedürfnisse ab.

                            Anmerkung: Die CPU-Klasse ist "sauber" programmiert (in Bezug auf Ressourcenverwaltung).

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

                            Comment


                            • #15
                              Ich danke Dir schon mal für Deine Mühe! Puh - hab mir das einfacher vorgestellt, c# selbst zu erlernen...
                              Naja, vllt mach ich ja doch lieber einen Kurs...

                              Comment

                              Working...
                              X