Die "Sleep();" Funktion

05/11/2012 16:36 DarkVampir#1
Hallo,
ich habe einen Button dieser hat Folgende Funktionen:
Code:
			this->status->Text = L"Suche nach Updates...";
			this->progress->Style = System::Windows::Forms::ProgressBarStyle::Marquee;
			this->progress->TabIndex = 6;
			this->progress->Value = 100;
			Sleep(20000);
			this->status->Text = L"Keine neuen Updates verfügbar...";
Nun führt er das Warten nicht aus.. Worann kann das liegen?
05/11/2012 17:05 xNopex#2
Versuchs mal mit der CLI Alternative: [Only registered and activated users can see links. Click Here To Register...]
05/11/2012 17:13 DarkVampir#3
Und wie bau ich das ein xD
05/11/2012 17:15 xNopex#4
Schau dir den Beispielcode zur Methode an?
05/11/2012 17:17 DarkVampir#5
Okay, nun gehts habe aber das prob das er zuerst das was vor dem Timer ist anzeigt...
05/11/2012 17:19 xNopex#6
Was fürn Timer? Ich kann leider nicht deinen Code hellsehen...
05/11/2012 17:24 DarkVampir#7
Code:
[COLOR="Red"]this->status->Text = L"Suche nach Updates...";
this->progress->Style = System::Windows::Forms::ProgressBarStyle::Marquee;
this->progress->TabIndex = 6;
this->progress->Value = 100;[/COLOR]
Thread::Sleep( 5000 );
this->status->Text = L"Keine neuen Updates...";
Das Über Sleep wird garnicht erst angezeigt, sonder nach 5 Sek das was danach ist, er soll aber erst dass davor und dann das nanach anzeigen...
05/11/2012 17:33 xNopex#8
Klar wird das davor nicht angezeigt. Die GUI-Elemente werden wohl nicht "aktualisiert". Wann denn auch.. Du setzt da nen Text und paar andere Werte, lässt das ganze programm 5Sekunden einfrieren und setzt dann den neuen Text. Erst jetzt wird die GUI aktualisiert mit den neuen Werten.
Dein ganzes Konzept ist völlig falsch durchdacht. Keine Ahnung, was du genau machen willst, aber so wie dus machen willst, wird das nur sehr unsauber gehen. Schau dir dazu mal Die vom Control geerbten Methoden "Update" und "Refresh" an und die "DoEvents" Methode von Application an.
Aber wie gesagt kein guter Stil. Überdenke lieber dein Konzept.

EDIT:
[Only registered and activated users can see links. Click Here To Register...]
05/11/2012 17:59 DarkVampir#9
Also:
Normalstatus -> Update suche... (Dass vor den Sleep)(Hier laufen die 5 Sekunden) -> Andere anzeige
So sollte es sein

EDIT: Habe public: void Update() nun hinzugefügt, nun macht er die 5 Sekunden warten garnichtmehr...
05/11/2012 21:15 Minelager#10
Setz mal vor dem ganzen noch ein Sleep
05/11/2012 21:59 DarkVampir#11
Nein, er bleibt wieder hier stehet:
this->progress->Style = System::Windows::Forms::ProgressBarStyle::Marquee;
this->progress->TabIndex = 6;
this->progress->Value = 100;
this->progress->MarqueeAnimationSpeed = 50;

Er animiert aber nicht den prozess...
05/11/2012 22:52 MoepMeep#12
Ein Sleep im Gui thread, ich bitte dich. Thread starten, dort machen, was auch immer du machen willst und das gui über Events aktualisieren.
05/11/2012 23:08 DarkVampir#13
Wie mach ich das mit den Events?
05/11/2012 23:49 MoepMeep#14
Quote:
Originally Posted by DarkVampir View Post
Wie mach ich das mit den Events?
Dadrüber findest du genug bei google. Ein wenig eigeninitiative darf ja wohl sein.
05/12/2012 00:27 .Dash#15
Bei mir läuft es...