Wpis z mikrobloga

Chciałem napisać stoper na Windows Phone, ale aplikacja przestaje reagować, a Visual nie zgłasza żadnego błędu. Kod wygląda tak:

private void StartClick(object sender, RoutedEventArgs e)
{
GlobalDate.stoper
start = true;
DateTime starttime = DateTime.Now;
while (GlobalDate.stoper
start == true)
{
Result.Text = " ";
DateTime currenttime = DateTime.Now;
TimeSpan TS = current
time - starttime;
int hours = TS.Hours;
int minutes = TS.Minutes;
int seconds = TS.Seconds;
int mili = TS.Milliseconds;
Result.Text = hours.ToString() + ":" + minutes.ToString() + ":" + seconds.ToString() + ":" + mili.ToString();
}
}

Zrobiłem podobny kod do aplikacji konsolowej i tam wszystko działa
DateTime start
time = DateTime.Now;
while (10>2)
{
Console.Clear();
DateTime currenttime = DateTime.Now;
TimeSpan TS = current
time - start_time;
int hours = TS.Hours;
int minutes = TS.Minutes;
int seconds = TS.Seconds;
int mili = TS.Milliseconds;
Console.WriteLine(hours.ToString() + ":" + minutes.ToString() + ":" + seconds.ToString() + ":" + mili.ToString());
}
Nie rozumiem dlaczego ten sam kod nie działa w obu przypadkach.
Gdy zamieniam pętlę while na warunek if to TextBox Result pokazuje mi ładny wynik 0:0:0:1, ale niespecjalnie satysfakcjonuje mnie stoper odmierzający do 0.001 sekundy( ͡° ʖ̯ ͡°)
#windowsphone #programowanie #csharp
  • 8
  • Odpowiedz
@sebastian-koziel: Nie możesz robić takich pętli w wątku obsługującym interface użytkownika. Stwórz nowy wątek albo napisz to asynchronicznie za pomocą async i await. Tylko w nowym wątku trzeba uważać w jaki sposób zmienia się elementy UI.
  • Odpowiedz