Modyfikacja podczas działania Sleep'a
Napisane: niedziela, 29 stycznia 2012, 02:01
Witam
Napisałem sobie maleńki programik, który ogólnie mówiąc działa, ale chciałbym go troszkę usprawnić.
Otóż program po naciśnięciu Start wykonuje pętlę, którą można przerwać przyciskiem Stop.
Pętla polega na wykonaniu polecenia, które jest opóźniane Sleep'em na konkretny czas podawany przez TrackBar1, np.: TrackBar1->Position = 1000, więc Sleep(1000) ... następnie polecenie.
Pod przycisk Stop wrzuciłem fragmentu kodu Barona odnośnie przerywania działania Application->ProcessMessages(); if(przerwij == true) break;
Problem jednak polega na tym, że polecenie Sleep ( lub pętla, nie mam 100% pewności ) zatrzymuje ingerencję w Form1 na czas jednego obrotu, a co za tym idzie każda ingerencja w przycisk, TrackBar1, czy nawet próba zamknięcia programu powoduje najpierw zakończenie przetwarzania ( pomimo instrukcji przerwania ). Nie ma kłopotu, gdy Sleep jest 100, ale przy 100000 zaczyna to być uporczywe :/
Ma ktoś może jakiś pomysł?
Oczywiście Sleep mogę ominąć, jeśli tylko ktoś podpowie jak inaczej zatrzymać wykonanie polecenia o wartość TrackBar1.
Próbowałem "obejść" problem i podzieliłem wartość TrackBar1 na 10, żeby utworzyć 10 Sleepów, ale to także nie pozwala na edycję Form1 podczas przeskakiwania między Sleep'ami.
Z góry dziękuję za podpowiedzi.
Pozdrawiam
Napisałem sobie maleńki programik, który ogólnie mówiąc działa, ale chciałbym go troszkę usprawnić.
Otóż program po naciśnięciu Start wykonuje pętlę, którą można przerwać przyciskiem Stop.
Pętla polega na wykonaniu polecenia, które jest opóźniane Sleep'em na konkretny czas podawany przez TrackBar1, np.: TrackBar1->Position = 1000, więc Sleep(1000) ... następnie polecenie.
Pod przycisk Stop wrzuciłem fragmentu kodu Barona odnośnie przerywania działania Application->ProcessMessages(); if(przerwij == true) break;
Problem jednak polega na tym, że polecenie Sleep ( lub pętla, nie mam 100% pewności ) zatrzymuje ingerencję w Form1 na czas jednego obrotu, a co za tym idzie każda ingerencja w przycisk, TrackBar1, czy nawet próba zamknięcia programu powoduje najpierw zakończenie przetwarzania ( pomimo instrukcji przerwania ). Nie ma kłopotu, gdy Sleep jest 100, ale przy 100000 zaczyna to być uporczywe :/
Ma ktoś może jakiś pomysł?
Oczywiście Sleep mogę ominąć, jeśli tylko ktoś podpowie jak inaczej zatrzymać wykonanie polecenia o wartość TrackBar1.
Próbowałem "obejść" problem i podzieliłem wartość TrackBar1 na 10, żeby utworzyć 10 Sleepów, ale to także nie pozwala na edycję Form1 podczas przeskakiwania między Sleep'ami.
Z góry dziękuję za podpowiedzi.
Pozdrawiam