Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Amenda in Lipsa ?

Acoperire gol extrior intre termo...

Intreprindere individuala fara ac...

Marci Biciclete - recomandari
 Lipsa Tensiune pe o Faza, bransam...

Recomandare bicicleta copil 5 ani.

Recomandare kit automat acces usa

[email][nvidia] Your GeForce NOW ...
 Site nesigur

Baghetele ornamentale intre foile...

O recomandare pentru o camera ful...

Pareri magazin online quickmobile?
 Unde gasesc banane albastre?

Despre compania de aministrare Sq...

Durere taietura deget dupa 2 luni

Dalți gravare lemn
 

Pauza fara sa "inghet" aplicatia

- - - - -
  • Please log in to reply
6 replies to this topic

#1
ANQ

ANQ

    Junior Member

  • Grup: Members
  • Posts: 55
  • Înscris: 27.03.2007
Salut

Vreau sa opresc un FOR pentru jumatate de secunda , fara efecte secundare .
Adica :
- am incercat cu sleep(500) , dar imi blocheaza aplicatia
- am incercat si9 algoritmul urmator :
			For i = 0 To 200
				hline.Left = i
				Refresh()
				cs = Format(Now.Subtract(acum).Milliseconds, 0)
				cr = cs
				While cr + 500 > cs
					cs = Format(Now.Subtract(acum).Milliseconds, 0)
					If cs < 500 Then
						cs = cs + 999
					End If
				End While
			Next i

dar imi nenoroceste , de asemenea , aplicatia .  in jumatate de secunda trebuie sa citeasca secunda curenta de 500 de ori ... si sa treaca si prin if ...

Daca poate sa imi spuna cineva cum pot sa opresc ciclul fara sa mi se blocheze aplicatia , ii sunt recunoscator :D

Folosesc VB2005

Edited by RAZ, 16 December 2007 - 10:05.
added codebox


#2
RAZ

RAZ

    Member

  • Grup: Members
  • Posts: 1,227
  • Înscris: 15.10.2004
Salut,
Incearca ca in acel while sa adaugi un mic Sleep(10) sau un DoEvents ;)

Edited by RAZ, 14 December 2007 - 13:44.


#3
freshmeat

freshmeat

    Junior Member

  • Grup: Members
  • Posts: 113
  • Înscris: 10.04.2007

 ANQ, on Dec 14 2007, 17:45, said:

Salut

Vreau sa opresc un FOR pentru jumatate de secunda , fara efecte secundare .
Adica :
- am incercat cu sleep(500) , dar imi blocheaza aplicatia
- am incercat si9 algoritmul urmator :

            For i = 0 To 200
                hline.Left = i
                Refresh()
                cs = Format(Now.Subtract(acum).Milliseconds, 0)
                cr = cs
                While cr + 500 > cs
                    cs = Format(Now.Subtract(acum).Milliseconds, 0)
                    If cs < 500 Then
                        cs = cs + 999
                    End If
                End While
            Next i

dar imi nenoroceste , de asemenea , aplicatia .  in jumatate de secunda trebuie sa citeasca secunda curenta de 500 de ori ... si sa treaca si prin if ...

Daca poate sa imi spuna cineva cum pot sa opresc ciclul fara sa mi se blocheze aplicatia , ii sunt recunoscator :D

Folosesc VB2005


Nu stiu sa lucrez in vb2005 dar stiu ca este 'asemanator' cu vb6.0
Am un cod (scris in visual basic 6.0) pe care ai putea sa il modifici .

Public Declare Function GetTickCount Lib "kernel32.dll" () As Long

Public Function Asteapta(ByVal Astept_Milisecunde As Long) 'Timp in milisecunde

	Dim EndTime As Long
  
	EndTime = GetTickCount + Astept_Milisecunde

	Do Until GetTickCount > EndTime
	
	DoEvents

	Loop
		
 End Function

... daca nu merge incearca cu un timer  :lol:

#4
ANQ

ANQ

    Junior Member

  • Grup: Members
  • Posts: 55
  • Înscris: 27.03.2007

 freshmeat, on Dec 14 2007, 13:51, said:

Public Declare Function GetTickCount Lib "kernel32.dll" () As Long

Public Function Asteapta(ByVal Astept_Milisecunde As Long) 'Timp in milisecunde

	Dim EndTime As Long
  
	EndTime = GetTickCount + Astept_Milisecunde

	Do Until GetTickCount > EndTime
	
	DoEvents

	Loop
		
 End Function

... daca nu merge incearca cu un timer  :lol:

freshmeat , am incercat varianta ta si am reusit sa obtin un raspuns mai bun de la aplicatie , f lent , dar e un raspuns :D
cu alte cuvinte , nu s-a blocat chiar de tot , si CPU nu mai e 98% , e 96 % :D

ms mult , oricum , pentru ajutor :D am renuntat la idee ... o sa incerc sa bag un gif in loc de animatia aia ... desi este f prost animat .

cat despre timer ,  :mellow:  nu stiu sa lucrez cu timer ..  sunt destul de incepator

RAZ said:

Salut,
Incearca ca in acel while sa adaugi un mic Sleep(10) sau un DoEvents

RAZ , am incercat asta deja [am mentionat in primul post , cu sleep(500) si refresh() in loc de DoEvents] ... si nu e deloc practic pentru ca imi opreste aplicatia ..imi trebuie de fapt sa faca o animatie cat timp se incarca ceva , daca eu opresc tot timpul aplicatia , cum o sa se mai incarce ?
anyway , multzumesc pt raspunsul rapid

#5
RAZ

RAZ

    Member

  • Grup: Members
  • Posts: 1,227
  • Înscris: 15.10.2004

 ANQ, on Dec 14 2007, 15:10, said:

RAZ , am incercat asta deja [am mentionat in primul post , cu sleep(500) si refresh() in loc de DoEvents] ... si nu e deloc practic pentru ca imi opreste aplicatia ..imi trebuie de fapt sa faca o animatie cat timp se incarca ceva , daca eu opresc tot timpul aplicatia , cum o sa se mai incarce ?
anyway , multumesc pt raspunsul rapid

Una e Sleep (500) in primul For alta e Sleep(20) in While-ul din for, una e Refresh alta e DoEvents, in fine ideea era ca un Sleep(20)+DoEvents erau suficiente pentru CPU sa proceseze si altceva, sa nu-ti inghete in acel loop...

succes :)

#6
ANQ

ANQ

    Junior Member

  • Grup: Members
  • Posts: 55
  • Înscris: 27.03.2007

 RAZ, on Dec 14 2007, 15:20, said:

Una e Sleep (500) in primul For alta e Sleep(20) in While-ul din for, una e Refresh alta e DoEvents, in fine ideea era ca un Sleep(20)+DoEvents erau suficiente pentru CPU sa proceseze si altceva, sa nu-ti inghete in acel loop...

succes :)

cine stie cunoaste :P
ai avut dreptate . am redus CPU la 19 .. deci e grozav :D ms mult , si scuza-ma ca am fost asha nepriceput ....
cand ai timp sa imi explici si care e ideea , pls ...

p.s. am facut ceva , mai mult din nimereala , cu un gif ... atata timp cat mergea chestia asta cu sleep si doevents , animatia se vedea chiar f clar ... stii cumva care ar fi ideea ?
sau altfel .. stii cum sa fac un gif sa afiseze fiecare frame timp de 5 milisecunde ? in mod normal merge cu 10 milisecunde , si asta inseamna ca imi sare peste cate un frame ... (asta in cazul in care ar utiliza mai putin din cpu)

Edited by ANQ, 14 December 2007 - 17:30.


#7
freshmeat

freshmeat

    Junior Member

  • Grup: Members
  • Posts: 113
  • Înscris: 10.04.2007

 ANQ, on Dec 14 2007, 19:40, said:

freshmeat , am incercat varianta ta si am reusit sa obtin un raspuns mai bun de la aplicatie , f lent , dar e un raspuns :D
cu alte cuvinte , nu s-a blocat chiar de tot , si CPU nu mai e 98% , e 96 % :D
ms mult , oricum , pentru ajutor :D am renuntat la idee ... o sa incerc sa bag un gif in loc de animatia aia ... desi este f prost animat .

Salut . In vb 6.0 folosesc des functia si am rezultate foarte bune nu stiu cum se comporta in vb 2005 . Ma bucur ca ai gasit rezolvare !

Edited by freshmeat, 14 December 2007 - 21:30.


Anunturi

Neurochirurgie minim invazivă Neurochirurgie minim invazivă

"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv.

Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate