Results 1 to 4 of 4

Thread: Programma reageert niet meer.

  1. #1
    Member Duiker's Avatar
    Join Date
    May 2020
    Location
    Hamont-Achel (Belgie), Pattaya (Thailand)
    Posts
    55

    Programma reageert niet meer.

    Een vraag van een hobby programmeur.

    De situatie:
    Mijn programma leest een Internet pagina in, filtert deze, en zet de gewenste data in een database. Op zich werkt dit prima. Het duurt wel behoorlijk lang voordat deze taak gedaan is. (meerdere Internet pagina's) Maar dat wist ik van te voren, en is ook geen probleem.

    Het probleem.
    Maar om nu naar het scherm te blijven turen, dat is geen goed idee, en dus ga ik wat anders op de computer doen. En daarmee ontstaat het probleem dat het programma aangeeft "Programma reageert niet". Dat staat ook bij Taakbeheer. In werkelijkheid loopt mijn programma gewoon door. Immers, als deze wel weer reageert, dan is alles gedaan wat ik geprogrammeerd heb. Er zijn 2 redenen waarom ik weet dat het programma de melding geeft dat deze niet meer reageert. De eerste reden is dat het scherm niet meer geupdate wordt. De andere reden is dat het zowel in Taakbeheer als boven in het programma de tekst verschijnt dat het programma niet meer reageert.

    Kan iemand mij uitleggen waarom dit zo gebeurd. En is er misschien een oplossing voor?

    Als het programma gestart wordt vanuit de programmeer omgeving met F9, dan loopt het programma beter dan dat deze als executable wordt gestart.

    Leon.

  2. #2
    Windows geeft die melding als het programma niet meer reageert op messages die Windows af en toe naar je programma stuurt (en zo dus weet dat je programma 'vastgelopen' is). De oplossing is er voor te zorgen dat je programma dus wel op die 'pokes' reageert.

    Waarschijnlijk heeft je programma een langlopende loop. In die loop moet je dus reageren op die pokes. Je kunt dat zelf doen maar makkelijker is het om even Application.ProcessMessages aan te roepen in de loop. Je moet dat wel voorzichtig doen want als je een button aan kunt klikken in je programma dan heb je kans dat je procedure een tweede keer uitgevoerd wordt. Dit zou je weer op kunnen lossen door een button.disable aan het begin te doen en met een try/finally ook een button.enable aan het einde.

  3. #3
    of het lezen van de webpagina in een thread plaatsen en ook verwerken van de web pagina in een thread plaatsen zodat de main screen blijft reageren op OS. Met een thread pool uitbreiden zodat het je net genoeg tijd hebt om koffie te halen voordat het programma klaar is.

  4. #4
    Member Duiker's Avatar
    Join Date
    May 2020
    Location
    Hamont-Achel (Belgie), Pattaya (Thailand)
    Posts
    55
    Het is inderdaad een lange loop. Nu roep ik op regelmatige tijden Application.ProcessMessages aan. En inderdaad, het programma loopt nu lekker door. Dat is een genot om te zien. Ik ben nog even bezig om het programma in de fout te krijgen. Maar dat is gelukkig nog niet gelukt.

    Een kop koffie halen en zien dat het programma klaar is, dat staat mij ook wel aan. Al is het minder belangrijk. Maar toch.
    Ik zie dat er wat uitleg hierover is op dit forum. Dat zal ik eerst eens gaan lezen.
    https://www.nldelphi.com/showthread....-Thread-uitleg

    Rik en Miep, bedankt voor het reageren.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •