Announcement

Collapse
No announcement yet.

einen Bereich alle x wiederholen

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

  • einen Bereich alle x wiederholen

    Hi, ich versuche hier:
    Code:
    private void B_start_Click(object sender, EventArgs e)
            {
    
                    // Startet die Abfrage über einen BackgroundWorker
                    if (!this.pWorker.IsBusy)
                    {
                        // Einlesen in ein Array
                        string[] Names = System.IO.File.ReadAllLines(HNames);
    
                        // Asynchron abrufen
                        this.pWorker.RunWorkerAsync(Names);
    
    
    
                        //      this.ListBox.Items.Clear();
                        this.B_start.Enabled = false;
                        this.B_cancel.Enabled = true;
                    }
                
            }
    Dieser Abschnitt startet eine Reihe von anderen Methoden, die dann das Programm ergeben nun habe ich vor das Programm alle 10 sek erneut automatisch zu starten, am Anfang habe ich es mit einer do-while Schleife probiert und wo unten dann eine for schleife ist die bis 10 zählt und dann halt wieder von vorne anfängt, nur klappt es leider ned, das Prog hängt sich dann auf...

    Wie kriege ich es nun hin, das der Abschnitt oben, alle 10 Sekunden oder halt x Sekunden automatisch abgespielt wird?
    Zuletzt editiert von Alfons; 03.09.2010, 20:41.

  • #2
    Hallo,

    siehe Timer.

    Für die 2. Frage suche zuerst und wenn du ncihts gefunden hast erstelle ein neues Thema. Pro Thema eine Frage.


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

    Comment


    • #3
      Timer habe ich mir schon angeschaut, aber da muss man doch, soweit ich verstanden habe, eine extra Methode dafür machen, aber ich will ja nur den bestimmten Bereich dort wiederholen und nicht in eine neue Methode machen...

      Comment


      • #4
        Hallo,

        wenn dieser Bereich in sich abgeschlossen ist dann sollte dieser eine Methode sein. Das ist saubere Programmierung, alles andere führt zu einem Monolithen der nicht wartbar, nicht wiederverwendbar, nicht testbar, etc. ist.

        Anstatt explizit eine Methode zu erstellen können auch anonyme Methoden verwendet werden.


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

        Comment


        • #5
          Code:
          void t_Tick(object sender, EventArgs e)
                  {
                      // der Part
                  }
          Also schreibe ich einfach das was ich nun haben will in den Part rein?

          Aber genau das wollte ich ja eben nicht, weil das B_start Event ist ja schon eine Methode und dann kann ich nicht noch eine gebrauchen wo das selbe drin steht, ich will ja erst auf start drücken und das das dann automatisch abläuft und nicht gleich nach dem Programmstart

          EDIT:
          OK, kleine Planänderung, habe nun oben das start Event in den Timer gemacht und den Timer will ich mit start aufrufen, das geht jedoch nicht, weil der Timer automatisch anläuft, wie kann ich ihm sagen, ERST anlaufen NACHDEM start gedrückt wurde?
          Zuletzt editiert von Alfons; 03.09.2010, 21:10.

          Comment


          • #6
            Hallo,

            Also schreibe ich einfach das was ich nun haben will in den Part rein?
            Ja und in B_Start steht nur
            [highlight=c#]
            myTimer.Start();
            [/highlight]


            BTW: Schau dir bitte auch die Namenskonventionen an. Deine Bezeichnungen sind ein wenig abwegig.


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

            Comment


            • #7
              Gut, im Prinzip funktionierts nun, aber eigentlich immer noch nicht, habe es nun den Intervall auf 10 000 ms gestellt. Nun drückt man auf Start und er fängt erst nach 10 sekunden an und dann nicht wie es eigentlich soll, die Prozedur nach 10sekunden nocheinmal durchlaufen zu lassen. Sondern er führt sie gleich nochmal neu aus

              Comment


              • #8
                Hallo,

                ok - das hab ich jetzt vergessen dass der Winforms.Timer sich so verhält, den benutz ich nie

                Abhilfen:
                • ein bool anlegen das die 1. Ausführung verhindert und alle weiteren zulässt
                • den System.Threading.Timer verwenden, denn bei dem kann der 1. "Delay" eingestellt werden, allerdings ist hier auf Threadzugriffe auf UI-Elemente Acht zu geben (sonst kommt der Fehler: Ungültiger Threadübergreifender Zugriff...)



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

                Comment

                Working...
                X