• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Niedziałający czasomierz

Object Storage Arubacloud
0 głosów
170 wizyt
pytanie zadane 19 września 2023 w C# przez sisOOO Obywatel (1,370 p.)

Witam
Zrobiłem czasomierz, który nie wiedzieć czemu się zacina. Ogólnie to działa, gdy wepcham MessegeBox'a do środka pętli i gdy kliknę "okej" to zegar traci wartość o 1. Jednak gdy użyję sleep coś się krzyczy. Ktoś by mógł mi powiedzieć dlaczego i co zrobić w takiej sytuacji

zmienna countTime jest typu DateTime a strTime typu string. Wszystko jest robione przy pomocy winforms.

DateTime startTime = new DateTime();

startTime = startTime.AddMinutes((int)numTime.Value);
countTime = startTime;

strTime = startTime.Minute.ToString() + ":" + startTime.Second.ToString() + ":" + startTime.Millisecond.ToString();

lblTime.Text = strTime;

while (countTime > DateTime.MinValue)
{
    Thread.Sleep(1);
    countTime = countTime.AddMilliseconds(-1);

    strTime = countTime.Minute.ToString() + ":" + countTime.Second.ToString() + ":" + countTime.Millisecond.ToString();

    lblTime.Text = strTime;
}

 

1 odpowiedź

0 głosów
odpowiedź 19 września 2023 przez adrian17 Ekspert (344,860 p.)

coś się krzyczy

Nie napisałeś co konkretnie, ale zgaduję - okno się "zacina"?

Nie powinieneś takiego (kręcącego się w kółko przez jakiś czas) kodu pisać, bo nie wychodząc z metody nie pozwalasz okienku obsługiwać zdarzeń.

Zamiast pętli po czasie i Sleep()ów w głównym wątku, powinieneś użyć np Timera żeby winforms sam wykonywał daną metodę np równo co sekundę.

// np po wcisnieciu przycisku albo po odpaleniu okna, w konstruktorze
{
    timer.Interval = 1000;
    timer.Tick += OnTick;
    timer.Start();
}

public void OnTick(object sender, EventArgs e)
{
    // tutaj np zaktualizuj labelki timera
}

 

komentarz 19 września 2023 przez sisOOO Obywatel (1,370 p.)
Dzięki :)
komentarz 19 września 2023 przez sisOOO Obywatel (1,370 p.)

@adrian17, Hej powiesz jescze czym jest OnTick? Wsadziłem to do metody "timer_Tick" to jest to?

1
komentarz 20 września 2023 przez adrian17 Ekspert (344,860 p.)
No... to jest Twoja metoda która ma się wywoływać gdy timer... tyka. Możesz ją przecież nazwać jak chcesz :)

Podobne pytania

0 głosów
1 odpowiedź 1,441 wizyt
pytanie zadane 16 maja 2020 w C# przez AgentTecza Obywatel (1,810 p.)
0 głosów
1 odpowiedź 694 wizyt
pytanie zadane 6 kwietnia 2019 w C# przez WojMen Początkujący (330 p.)
0 głosów
3 odpowiedzi 558 wizyt
pytanie zadane 1 maja 2018 w C# przez Misiek Mądrala (5,300 p.)

92,580 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,965 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...