[MFC] Thread hangt/crashed applicatie

Pagina: 1
Acties:

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 24-08 22:38
Ik ben met een applicatie bezig die een seriale poort polled, en vervolgens wat UI updates moet doen.

Het pollen van de poort wordt in een aparte thread afgehandeld.

Omdat je niet vanuit een aparte thread een update kunt doen van je UI, stuur ik met postmessage een user defined message naar de HWND van mijn window. ( is overigens een modal dialog box )

In de release versie crashed het ding bijna meteen ( na tweede message ongeveer )
In de debug versie blijft het langer draaien, maar op een gegeven moment 'locked' deze ook. Dwz, mijn combos doen niet meer wat ze moeten doen, de knoppen werken nog wel.

Waarschijnlijk doe ik iets heel simpels verkeerd, maar ik kan er niet achter komen.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • whoami
  • Registratie: December 2000
  • Laatst online: 12:26
Zorg je ervoor dat er in die thread die de poort polled een sleep zit, zodat het OS tijd heeft om die updates aan de UI door te voeren?

https://fgheysels.github.io/


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 24-08 22:38
Je bent geweldig :)

Ik vraag me wel af waarom dit moet trouwens. Als ik de poll in een andere thread heb zitten zou het toch zo moeten zijn dat de andere thread vrij is om de messages te handlen?

Anyway, het lijkt nu inderdaad wel te werken.

( Had ik al gezegd dat je geweldig bent ? ;) )

* farlane voelt zich weer helemaal n00b

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • whoami
  • Registratie: December 2000
  • Laatst online: 12:26
[nohtml]
I know. O+ :+
Ik vraag me wel af waarom dit moet trouwens. Als ik de poll in een andere thread heb zitten zou het toch zo moeten zijn dat de andere thread vrij is om de messages te handlen?
Als je in een thread een oneindige loop hebt, dan moet je -afaik- altijd een sleep binnen die loop zetten. Gewoon om het OS toch even de kans te geven om andere messages af te handelen.
In Win '95/98 NT etc... is het wel het OS dat bepaald wanneer de time-slice van een thread over is, en de controle aan een andere thread gegeven wordt, maar imho moet er toch altijd wat tijd zijn zodat het OS de geposte messages kan afhandelen. Anders komen die allemaal maar in de queue terecht, en als het OS die messages niet kan afhandelen, dan duurt het niet zo lang vooraleer die queue vol zit.

https://fgheysels.github.io/