» »

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///////////////////////////
>:D 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?

Quikee ::

Ah to ko ti preverja bi moral zaganjat v svoji niti...

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.. >:D

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??

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.

hojtad ::

thnx Kekec, z SetTimer sn zrihto


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C++]prenašanje datotek iz neta

Oddelek: Programiranje
121504 (1324) BlueRunner
»

Avtomatično pritiskanje gumbov!

Oddelek: Programiranje
121439 (1169) darkolord
»

[C++]Zagon drugega programa in izvajanje ukaza

Oddelek: Programiranje
111427 (1272) 64202
»

Komunikacija med thread-i

Oddelek: Programiranje
133722 (3528) zlatko
»

c++ zapis funkcije

Oddelek: Programiranje
81191 (1114) Vesoljc

Več podobnih tem