Napisałem ostatnio krótki program przy użyciu Borland c++ builder, który w pewnym momencie wykonuje niesłychanie długą pętlę. Problem mój polega na tym, że w trakcie wykonywania tej pentli zupełnie traci on kontakt z systemem… tzn., przestaje reagować na wciskanie buttonów… w momencie jak próbuję go zamknąć, to cały system zaczyna się walić… co powinienem dodać do jego kodu, żeby można go było wyłączyć nawet w trakcie działania tej pętli?
Powinieneś dodać obsługę zdarzeń No bo jak niby ma program reagować na kliknięcia w przycisk jeśli mu tego nie zaprogramujesz?
Daj może kod tego programu i co ma dokładnie robić bo może masz jakiś błąd, który powoduje wejście w nieskończoną pętlę a co za tym idzie obciążenie procesora.
Z tego co opisałeś wynika, że zwyczajnie zamarza Ci interfejs. Jak się domyślam, w tej pętli dokonywane są jakieś złożone obliczenia, które bardzo obciążają procesor. Albo w pętli dzieje się coś, co zawiesza program Tak czy siak, żadne zdarzenia od przycisków nie będą wykonywane, bo procesor robi co innego. Aby tego uniknąć musisz uruchomić pętlę w innym wątku.
Poczytaj o programowaniu wielowątkowym.
somekind dobrze mówi, ale wydaje mi się, że raczej tu chodzi o nieodbieranie zdarzeń wysyłanych przez system. Nie wiem jak to w VCL jest, ale wydaje mi się, że prędzej tak jak ja powiedziałem.
Edit: Początek zdania to napisałem z dużej, już nie będę.
Ja wychodzę z założenia, że skoro “przestaje reagować na wciskanie buttonów”, to znaczy, że kiedyś reagował, więc i zdarzenia musiał mieć podpięte. Zobaczymy, jak się autor odezwie.
P.S. Fiołek - mała uwaga: somekind, a nie Somekind
dziękuję wszystkim za komentowanie mojego postu już 2 osoby mi powiedziały o tym programowaniu wielowątkowym, toteż prawdopodobnie będę musiał się skłonić w tym kierunku…