[C++] Progressbar venster blokkeert applicatie

Pagina: 1
Acties:

  • mduijvendijk
  • Registratie: Oktober 2001
  • Laatst online: 11-05 14:22

mduijvendijk

Flying Rukia ^_^

Topicstarter
Ik heb een applicatie dat database gegevens opvraagt en kan wijzigen geprogrammeerd in Visual Studio C++ 6.

Als ik een dialoog open, dan wordt er een bepaalde recordset uit MySQL gehaald (20.000 records).
Omdat het laden nogal wat tijd kost heb ik een progressbar gemaakt in een nieuw dialoog venster.

het probleem is echter, dat het dialoogvenster niet doorgaat met het ophalen van de recordset zodra de progressdialoog is geopend.

Hoe kan ik er voor zorgen dat de dialoog de controlle niet verliest als de progressdialoog open staat?
Als ik de progressdialoog instel als een childwindow, wordt het helemaal niet zichtbaar, maar gaat de applicatie wel verder.

Sometimes human's are...


Verwijderd

threading ?

Verwijderd

Zet de progressbar in een andere thread dan de taak die je uitvoert...

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 10:51

.oisyn

Moderator Devschuur®

Demotivational Speaker

Verwijderd schreef op 20 januari 2004 @ 19:54:
Zet de progressbar in een andere thread dan de taak die je uitvoert...
klinkt vast als mierenneukerij, maar een iets andere benadering: zet de taak die je uitvoert in een andere thread dan je progressbar.

In feite betekent het natuurlijk hetzelfde ;) maar die taak is duidelijk iets voor een worker thread. Je moet dus niet je progressbar in een andere thread openen dan je main window, maar het ophalen van de data juist delegeren naar een andere thread

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • mduijvendijk
  • Registratie: Oktober 2001
  • Laatst online: 11-05 14:22

mduijvendijk

Flying Rukia ^_^

Topicstarter
Treading is nou niet iets waar ik ervaring mee heb, maar in ieder geval bedankt.
Ik zal eens kijken of ik makkelijke een tread kan implemeteren.

Sometimes human's are...


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

.oisyn schreef op 20 januari 2004 @ 19:59:
[...]
klinkt vast als mierenneukerij, maar een iets andere benadering: zet de taak die je uitvoert in een andere thread dan je progressbar.

In feite betekent het natuurlijk hetzelfde ;) maar die taak is duidelijk iets voor een worker thread. Je moet dus niet je progressbar in een andere thread openen dan je main window, maar het ophalen van de data juist delegeren naar een andere thread
Plus dat het per definitie tig keer beter is om al je GUI-geneuzel binnen de main-thread te houden zodat je geen gekloot krijgt met synchronizatie door diverse simultane messagehandlers.

Voor TS: misschien een stomme vraag maar zeggen de termen 'modal' en 'modeless' je iets? Zo nee: zoek eens op in MSDN ;)

Professionele website nodig?


  • RickN
  • Registratie: December 2001
  • Laatst online: 14-06-2025
Tis al een tijdje geleden dat ik een applicatie voor windows heb geprogd hoor, dus misschien ga ik de plank nu keihard misslaan.

Desalniettemin zou ik echt hárd van m'n stoel afvallen als windows een complete applicatie stil zou zetten bij het openen van één of ander dialoogje. Volgens mij is het gewoon een kwestie van de juiste optie meegeven aan dat dialoogvenster. Er staat me iets bij van "modal" of juist "niet modal". Er valt best wel wat voor te zeggen om heel intensieve operaties in een eigen thread te stoppen, maar nodig is het volgens mij niet.

edit:
Oké, stond er al.... Damn, heb ik echt meer dan 6 minuten gedaan over het typen van dit berichtje?! Koffie! Meer koffie!!!

[ Voor 21% gewijzigd door RickN op 21-01-2004 09:53 ]

He who knows only his own side of the case knows little of that.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 10:51

.oisyn

Moderator Devschuur®

Demotivational Speaker

Je kunt idd wel een modeless dialog openen, maar dan nog moet je de messagepump zelf in de gang houden (het verschil met een modal dialog is dat die een eigen messagepump implementatie heeft die pas ophoudt als je de window sluit). Dus misschien dat je de messages kunt pumpen zolang je staat te wachten op de database, maar als dat niet zo is dan zul je alsnog met een andere thread aan de gang moeten

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1