Forum » Programiranje » C++ 6.0 MFC vprašanje 2
C++ 6.0 MFC vprašanje 2
hojtad ::
gre za MFC AppWizard(exe) projekt, dialog based
recimo da mam neko neskončno zanko v kateri bi rad vsakega tolko časa (recimo 100 sekund) zagnal neke funkcije:
while (true)
{
update spremenljivk(podatkov)
testiranje podatkov
izpis novih podatkov
/////////////////////////PROBLEM///////////////////////////
Sleep(100000);
}
ta sleep zablokira celi program in ne morem nič delat z dialogom(gumbi,editboxi,...), niti normalno zapret
kak bi lahko imel v tem vmesnem času-čakanju še vedno kontrolo nad dialogom(oknom)?? Recimo za vnos kakih novih pogojev testiranja
kaj naj naredim namesto tega sleep?
recimo da mam neko neskončno zanko v kateri bi rad vsakega tolko časa (recimo 100 sekund) zagnal neke funkcije:
while (true)
{
update spremenljivk(podatkov)
testiranje podatkov
izpis novih podatkov
/////////////////////////PROBLEM///////////////////////////
Sleep(100000);
}
ta sleep zablokira celi program in ne morem nič delat z dialogom(gumbi,editboxi,...), niti normalno zapret
kak bi lahko imel v tem vmesnem času-čakanju še vedno kontrolo nad dialogom(oknom)?? Recimo za vnos kakih novih pogojev testiranja
kaj naj naredim namesto tega sleep?
zed 5.0 ::
Jasno da blokira, ker si window-u blokiral message loop. Po mojem mas dva nacina za resitev tega problema. Vsekakor je kreiranje novega threada ena od opcij (po mojem tudi najboljsa). Ce na noben nacin noces delat s threadi, pa imas moznost lovit evente tako da hkrati spuscas cez vse window message. Poglej si API-ja MsgWaitForMultipleObjects in CreateWaitableTimer. Samo po mojem se bos ustrasil teh funkcij, sploh prve, tko da ti vseen svetujem nov thread. Lahko pa probas. Razlagat se mi pa ne da, ker bo prevec sare..
Zgodovina sprememb…
- spremenilo: zed 5.0 ()
zed 5.0 ::
Da ti se mal pomagam, tukaj imas info o MsgWaitForMultipleObjects, zascrolaj nizje kjer imas link do exampla. To je v osnoivi tisto, kar bi ti moral narediti v tvojem programu. Plus timer (CreateWaitableTimer).
hojtad ::
kak se uporabljajo niti v MFCju??
nekaj malega vem iz linuxa, C
kak so v MFCju ukazi za fork, getpid, wait,...
while (true)
{
...
...
fork()
če je sin -> sleep()
če je oče -> dalje
oče čaka da se sin zakluči
}
je približno tak??
samo kak so ukazi??
nekaj malega vem iz linuxa, C
kak so v MFCju ukazi za fork, getpid, wait,...
while (true)
{
...
...
fork()
če je sin -> sleep()
če je oče -> dalje
oče čaka da se sin zakluči
}
je približno tak??
samo kak so ukazi??
Kekec ::
Če še nisi pripravljen na "niti" potem se lahko obrneš na metodo SetTimer, seveda če ne želiš neki hudga delat v tej funkciji ki se bo izvajala vsake 100 sek. Poglej malo v MSDN da si pogledaš to funkcijo.
Pa še link.
Pa še link.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [C++]prenašanje datotek iz netaOddelek: Programiranje | 1504 (1324) | BlueRunner |
» | Avtomatično pritiskanje gumbov!Oddelek: Programiranje | 1439 (1169) | darkolord |
» | [C++]Zagon drugega programa in izvajanje ukazaOddelek: Programiranje | 1427 (1272) | 64202 |
» | Komunikacija med thread-iOddelek: Programiranje | 3722 (3528) | zlatko |
» | c++ zapis funkcijeOddelek: Programiranje | 1191 (1114) | Vesoljc |