Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Rezervare gresita

Ce erau chestiile astea pe cerul ...

Apa plata ieftina vs scumpa

Serial: Those About to Die
 Malwarebytes Windows Firewall Con...

hotel pentru copii

Nu pot reinstala windows 11

Replacement grip pentru racheta t...
 clima cu sunet ciudat

Baterie Externa Solara, Power Ban...

An constructie bloc

Am vazut odata un film...
 Problema scurgere apa rama termop...

Durata estimata de viata a unei i...

Identificare filet butelie r290

Sifon pe circuitul frigorific.
 

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

View PostANQ, 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

View Postfreshmeat, 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

View PostANQ, 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

View PostRAZ, 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

View PostANQ, 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

Chirurgia spinală minim invazivă Chirurgia spinală minim invazivă

Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical.

Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale.

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