Zurück   Entwickler-Forum > .NET > C#

Antwort
 
Themen-Optionen Ansicht

Merhere Funktionen gleichzeitig
Alt 15.03.2010, 14:23   #1
emerel
Zaungast
 
emerel ist offline
Registriert seit: 02.03.2010
Beiträge: 42
emerel befindet sich auf einem aufstrebenden Ast
Standard Merhere Funktionen gleichzeitig

Hi,

ich habe ein Form, wenn ich da auf den Button Zeitsteuerung klicke startet das meinen Timer
Code:
private void button29_Click(object sender, EventArgs e)
        {
            Zeitsteuerung zt = new Zeitsteuerung();
            zt.timer();
        }
nun habe ich noch einen Button, mit dem ich die Zeitsteuerung wieder abschalten will (der setzt dann einen Wert in der Zeitsteuerung auf 0 so das die If verzweigung sie dann schließt)

Wenn ich aber auf den button klicke passiert nichts. Hab das im Debug-Modus nachgeschaut und der führt ja die ganze zeit die Zeitsteuerung aus, so das er ja anscheinend nichts anders grade machen kann.

Wie kann man das nun lösen?

Hier ist mal der wichtigste Teil der Zeitsteuerung die ja so funktioniert
Code:
        public void timer()
        {
            wert = this.getanzahl(intarr[1], intarr[0]);
            stopper = 1;
            Clock.Interval = 1000;
            Clock.Start();
            Clock.Tick += new EventHandler(Clock_Tick);

        }

        public void Clock_Tick(Object myObject,EventArgs myEventArgs)
        {
            if (stopper == 0)
                Clock.Stop();
            zaehler = zaehler + 1000;
            if (zaehler == wert)
            {
                MessageBox.Show("auf gehts");
            }
  Mit Zitat antworten

Anzeige

Alt 15.03.2010, 14:27   #2
Christian Marquardt
Forenheld
 
Christian Marquardt ist offline
Registriert seit: 26.02.2003
Beiträge: 9.279
Christian Marquardt befindet sich auf einem aufstrebenden Ast
Standard

Entweder das mit einem richtigen Timer (new Timer()) oder einem Thread realisieren
__________________
Christian

________________________________________
C-Ecke
  Mit Zitat antworten

Alt 15.03.2010, 14:39   #3
Jürgen Thomas
Stammgast
 
Jürgen Thomas ist offline
Registriert seit: 26.02.2003
Beiträge: 1.918
Jürgen Thomas befindet sich auf einem aufstrebenden Ast
Standard

Das hier ist vor allem Quatsch:
Code:
Zeitsteuerung zt = new Zeitsteuerung();
In dem Button-Click wird eine neue Instanz der Klasse deklariert und erzeugt, mit der etwas gemacht - und am Ende des EventHandlers ist diese Instanz überflüssig und wird dem GC übergeben.

Wenn deine Klasse einen Sinn hat, musst du die Instanz außerhalb des EventHandlers deklarieren. Aber Christians Vorschläge sind vermutlich besser.

Gruß Jürgen

PS. Namen wie Button29 gehören verboten, siehe .NET Richtlinien für Namen.
  Mit Zitat antworten

Alt 15.03.2010, 14:51   #4
emerel
Zaungast
 
emerel ist offline
Registriert seit: 02.03.2010
Beiträge: 42
emerel befindet sich auf einem aufstrebenden Ast
Standard

den Timer erzeuge ich oben in der Klasse Zeitsteuerung

Timer Clock = new Timer();

und wenn ich im Form nun ein Objekt der Klasse brauche muss ich das doch logischer weise erzeugen oder nich?
also is doch

Zeitsteuerung zt = new Zeitsteuerung

in Ordnung ich brauch das ja nur an der stelle und nirgens sonst

@ Jürgen
das mit den Namen is im moment wurscht weil ich das nur zum testen nehme

Geändert von emerel (15.03.2010 um 14:56 Uhr)
  Mit Zitat antworten

Alt 15.03.2010, 14:56   #5
Ralf Jansen
Stammgast
 
Ralf Jansen ist offline
Registriert seit: 26.02.2003
Beiträge: 1.800
Ralf Jansen befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
, und wenn ich im Form nun ein Objekt der Klasse brauche muss ich das doch logischer weise erzeugen oder nich?
Ja, aber am Ende der Methode wird nicht mehr auf Zeitsteuerung verwiesen. Wenn der GC die Klasse zerstört bevor der Timer Event ausgeführt wird passiert gar nichts. Ist also eine Art Glücksspiel das du da betreibst.
  Mit Zitat antworten

Alt 15.03.2010, 14:58   #6
emerel
Zaungast
 
emerel ist offline
Registriert seit: 02.03.2010
Beiträge: 42
emerel befindet sich auf einem aufstrebenden Ast
Standard

funktioniert aber einwandfrei

hab das schon mehrfach durchlafen lassen
  Mit Zitat antworten

Alt 15.03.2010, 15:01   #7
Ralf Jansen
Stammgast
 
Ralf Jansen ist offline
Registriert seit: 26.02.2003
Beiträge: 1.800
Ralf Jansen befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
funktioniert aber einwandfrei
hab das schon mehrfach durchlafen lassen
Schon mehrmals? Wow. Dann muss es ja immer funktionieren. Da kann man nur viel Glück wünschen
  Mit Zitat antworten

Alt 15.03.2010, 15:06   #8
emerel
Zaungast
 
emerel ist offline
Registriert seit: 02.03.2010
Beiträge: 42
emerel befindet sich auf einem aufstrebenden Ast
Standard

da wir uns ja nun geeinigt haben das das so funktioniert...

kann ich das dann nich so machen wie der GC (was meint ihr damit eigentlich ?), das ich das Objekt kille wenn ich auf einen Button klicke?
  Mit Zitat antworten

Alt 15.03.2010, 15:29   #9
Christian Marquardt
Forenheld
 
Christian Marquardt ist offline
Registriert seit: 26.02.2003
Beiträge: 9.279
Christian Marquardt befindet sich auf einem aufstrebenden Ast
Standard

GC= Garbage Collector
__________________
Christian

________________________________________
C-Ecke
  Mit Zitat antworten

Alt 15.03.2010, 15:37   #10
Ralf Jansen
Stammgast
 
Ralf Jansen ist offline
Registriert seit: 26.02.2003
Beiträge: 1.800
Ralf Jansen befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
kann ich das dann nich so machen wie der GC (was meint ihr damit eigentlich ?), das ich das Objekt kille wenn ich auf einen Button klicke?
Du solltest erstmal dafür sorgen das Zeitsteuerung den button29_Click EventHandler garantiert überlebt.

Zitat:
Zitat von jürgen thomas Beitrag anzeigen
...
Wenn deine klasse einen sinn hat, musst du die instanz außerhalb des eventhandlers deklarieren. ...
Wenn du das gemacht hast kannst du einen weiteren Button wieder auf die Zeitsteuerungsklasse zugreifen. Wobei dein Wunsch nach ~killen~ eher meint das du den Timer anhalten willst oder?
  Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu



Alle Zeitangaben in WEZ +2. Es ist jetzt 08:05 Uhr.



© 1995–2009 Software & Support Verlag GmbH. Vervielfältigung nur mit Genehmigung des Verlags.