Wpis z mikrobloga

#csharp
#programowanie
#visualstudio

Zacząłem swoją przygodę z C# i chciałbym naklepać prosty timer zliczający sekundy od wciśnięcia przycisku do ustalonego sztywno czasu. Naklepałem cosik takiego:

Int32 SystemTick = Environment.TickCount;

Int32 Clock = SystemTick+1000;


while (SystemTick + 5000 > Environment.TickCount)

{

if (Environment.TickCount >= Clock)

{

timer++;

timerLabel.Text = timer.ToString();

Clock+=1000;

}

}


Ale napis w label wskakuje dopiero po 5s a nie co 1s jak założyłem. Co skopałem? :D
  • 6
  • Odpowiedz
@Xaveri: Wątki, jeśli się nie mylę (choć to by było dziwne, myślałem że UI jest w osobnym wątku). Pętlą while blokujesz cały program i dopiero po jej zakończeniu jest możliwe uaktualnienie interfejsu
  • Odpowiedz
No i gites - napisałem wątek, dałem piękne:

label.invoke(new action(delegate() { ... }


I działa jak ta lala :).
  • Odpowiedz