Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Cum accesez site-ul CNAS ?

Algoritm simplu de calculare al u...

Bitdefender Total Security ș...

casa verde 2024
 Intrerupator cu N - doza doar cu ...

Incalzire casa fara gaz/lemne

Incalzire in pardoseala etapizata

Suprataxa card energie?!
 Cum era nivelul de trai cam din a...

probleme cu ochelarii

Impozite pe proprietati de anul v...

teava rezistenta panou apa calda
 Acces in Curte din Drum National

Sub mobila de bucatarie si sub fr...

Rezultat RMN

Numar circuite IPAT si prindere t...
 

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

Bun venit pe Forumul Softpedia!

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