Entwickler-Ecke

WinForms - Time out funktion?


.NETT - Di 05.08.08 21:23
Titel: Time out funktion?
Hallo
Ich suche so etwas wie eine Time out Funktion. In Javascript gibt es ja setTimeOut().
Also ich will nur, dass nach jeweils 2 Sekunden eine Bldschirmausgabe erscheint. Kennt ihr sowas, oder könnt ihr mir schnell sowas schreiben?
mfg
.NETT


Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Di 05.08.2008 um 21:53


Chryzler - Di 05.08.08 21:49

Wenn du einfach einen Befehl suchst, der die Programmausführung im aktuellen Thread eine bestimmte Zeit lang anhält:

C#-Quelltext
1:
Thread.Sleep(2000); // 2000 ms warten                    

Nicht vergessen, den entsprechenden Namespace einzubinden! Müsste System.Threading sein.


.NETT - Mi 06.08.08 14:47

Hallo
Danke erstmal
Anscheinend strützt das Programm immer ab, wenn ich die Fuktion (grrr... METHODE) einsetze. Kennst du alternativen oder den Grund hierfür?
mfg
.NETT


Christian S. - Mi 06.08.08 14:51

Mit Thread.Sleep(2000) legst Du den Thread schlafen. Wenn Du das im Hauptthread aufrufst, reagiert das Programm dann natürlich nicht mehr.

Vielleicht beschreibst Du mal ein bisschen mehr, was Du machen willst. Solche "Pausen" sind bei Programmen eigentlich unüblich.

//edit: Die Felder "Betriebssysteme" und "Sprache und IDE" sind übrigens nicht dazu da, alles reinzuschreiben, was Du auf Deinem Rechner findest. Kürze das doch mal auf das zusammen, was für dieses Forum relevant ist. Danke!


.NETT - Mi 06.08.08 21:39

//ok, das änder ich gleich

Naja, ich wollte, dass in einem Label "Laden" steht und jeweils nach ein paar sekunden ein punkt hinzukommt. Also so:
"Laden"
1 sek. später
"Laden."
1 sek. später
"Laden.."
1 sek. später
"Laden..."

Da wir schon dabei sind:
Das soll so lange geschehen, bis die Maus ein bestimmtes Steuerlement verlässt. Ich glaube man müsste in eine while-Schleife die Mausposition prüfen, oder? Gibs dafür Methoden/Objekte?
mfg
.NETT


Christian S. - Mi 06.08.08 21:44

user profile icon.NETT hat folgendes geschrieben:
//ok, das änder ich gleich

Naja, ich wollte, dass in einem Label "Laden" steht und jeweils nach ein paar sekunden ein punkt hinzukommt. Also so:
"Laden"
1 sek. später
"Laden."
1 sek. später
"Laden.."
1 sek. später
"Laden..."

Schau Dir mal 'nen Timer an. ;-)

user profile icon.NETT hat folgendes geschrieben:
Da wir schon dabei sind:
Das soll so lange geschehen, bis die Maus ein bestimmtes Steuerlement verlässt. Ich glaube man müsste in eine while-Schleife die Mausposition prüfen, oder?

Nein. Die meisten Steuerelemente haben ein MouseLeave-Event, auf welches Du reagieren kannst. Mit Schleifen irgendwas ständig zu prüfen macht man auch nur selten, die Programmierung in .NET ist eher Ereignis-basiert. :-)


.NETT - Do 07.08.08 14:04

Zitat:
Schau Dir mal 'nen Timer an. ;-)

Ok werd ich machen. Vielen Dank!

Zitat:
Nein. Die meisten Steuerelemente haben ein MouseLeave-Event, auf welches Du reagieren kannst. Mit Schleifen irgendwas ständig zu prüfen macht man auch nur selten, die Programmierung in .NET ist eher Ereignis-basiert. :-)

Ich weiß, das MosueLeave-Event habe ich auch schon entdeckt, aber ich wollte es vermeiden, die Sache in zwei Methoden aufzuspalten:
Weil wenn "Laden" jetzt nach und nach "Laden..." erreicht hat, soll sich das ganze wiederholen. Also muss ich eine Endlosschleife reinpacken, AUßER ich mach in die Schleife eine Maus-Position Abfrage.
mfg
.NETT


Christian S. - Do 07.08.08 14:12

user profile icon.NETT hat folgendes geschrieben:
Weil wenn "Laden" jetzt nach und nach "Laden..." erreicht hat, soll sich das ganze wiederholen. Also muss ich eine Endlosschleife reinpacken,

Nein. Einen Timer ;-)

user profile icon.NETT hat folgendes geschrieben:
AUßER ich mach in die Schleife eine Maus-Position Abfrage.

Nein, Du setzt im MouseLeave-Event den Timer auf Enabled = False.


.NETT - Fr 08.08.08 13:59

Zitat:
Nein, Du setzt im MouseLeave-Event den Timer auf Enabled = False.

Hä? Is der Timer jetzt ein Steuerlement oder eine Funktion (Methode)?
mfg
.NETT


Christian S. - Fr 08.08.08 14:04

Ein bisschen Eigeninitiative, bitte! :mahn:
Einfach mal Timer in der Doku nachschlagen ;-)